为什么require_one在以下场景中不起作用


Why the require_once is not working in following scenario?

我在一个名为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内部服务器错误。

$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;
  }  
}

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

提前谢谢。

我建议您在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;
}

我希望它对你有用。如果还有其他事情,请告诉我。