为啥 require_once 在以下情况下不起作用?

Posted

技术标签:

【中文标题】为啥 require_once 在以下情况下不起作用?【英文标题】:Why the require_once is not working in following scenario?为什么 require_once 在以下情况下不起作用? 【发布时间】:2015-05-26 04:59:45 【问题描述】:

我在一个名为 sample.php 的 PHP 文件中跟踪了一个函数的代码:

function deleteValue($value) 

  $servername = "localhost";
  $username = "root";
  $password = "jumbo";
  $dbname = "demo";

  // Create connection
  $conn = new mysqli($servername, $username, $password, $dbname);
  // Check connection
  if ($conn->connect_error) 
    die("Connection failed: " . $conn->connect_error);
  

  $sql = "DELETE FROM user WHERE value = '$value'";

  if ($conn->query($sql) === TRUE) 
    $conn->close();     
    return true;
   else 
    $conn->close();     
    return false;
    

其实在这个文件(sample.php)里面有太多这样的函数,重复下面的数据库连接代码:

      $servername = "localhost";
      $username = "root";
      $password = "jumbo";
      $dbname = "demo";

      // Create connection
      $conn = new mysqli($servername, $username, $password, $dbname);
      // Check connection
      if ($conn->connect_error) 
        die("Connection failed: " . $conn->connect_error);
      

然后,我在同一个文件夹中创建了一个名为db.php 的文件,并将上面的代码添加到其中。在文件'sample.php'的开头使用require_once('db.php');,我将文件包含在上面的代码中。最后代码出现如下:

require_once('db.php');
function deleteValue($value) 

      $sql = "DELETE FROM user WHERE value = '$value'";

      if ($conn->query($sql) === TRUE) 
        $conn->close();     
        return true;
       else 
        $conn->close();     
        return false;
        
    

现在它给了我 500 内部服务器错误。

即使我尝试通过将 db.php 中的整个代码粘贴到文件 sample.php 的开头而不是包含该文件,如下所示,但我仍然收到 500 Internal Server Error。

$servername = "localhost";
  $username = "root";
  $password = "jumbo";
  $dbname = "demo";

  // Create connection
  $conn = new mysqli($servername, $username, $password, $dbname);
  // Check connection
  if ($conn->connect_error) 
    die("Connection failed: " . $conn->connect_error);
  

function deleteValue($value) 

  $sql = "DELETE FROM user WHERE value = '$value'";

  if ($conn->query($sql) === TRUE) 
    $conn->close();     
    return true;
   else 
    $conn->close();     
    return false;
    

有人可以纠正我在代码中犯的错误吗?

提前致谢。

【问题讨论】:

错误是什么?你的错误日志是怎么说的? 您可以在没有此代码的情况下访问您的页面吗?内部服务器错误在我看来更像是服务器配置错误——由你的 htaccess 文件或 apache 的 httpd.conf 文件引起——而不是你的 PHP 脚本。 【参考方案1】:

我会建议你在 db_config.php 文件中你应该只使用这样的数据库配置和函数:

$servername = "localhost";
$username = "root";
$password = "jumbo";
$dbname = "jumbo_jet";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_errno) 
    echo "Failed to connect to MySQL: (" . $conn->connect_errno . ") " . $conn->connect_error;

common.php 中使用如下代码:

require_once("db_config.php");

function deleteToken($receivedToken) 
  global $conn;
  $sql = "DELETE FROM user_login WHERE token = '$receivedToken'";

  if ($conn->query($sql) === TRUE) 
    return true;
  
  return false;

我希望它对你有用。如果还有什么,请告诉我。

【讨论】:

我正在做的事情也是如此。如果你仔细看我的问题,你会知道我做过同样的事情,但得到了 500 内部服务器错误。 那么我认为您还有其他问题,不是 PHP 脚本错误。对不起!

以上是关于为啥 require_once 在以下情况下不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 wctype.h 中的函数在没有 setlocale() 的情况下不起作用?

为啥 DISTINCT 在这种情况下不起作用? (SQL)

为啥这个 if 语句在这种情况下不起作用? [关闭]

为啥转换在我的情况下不起作用

为啥我的 JRadioButton 在这种情况下不起作用?

为啥 os.path.join() 在这种情况下不起作用?