我在尝试使我的代码更安全后得到了这些错误:
注意:未定义的变量:db in/第10行上的init.php
警告:mysqli_real_escape_string((要求参数1为mysqli,在中给定null/第10行上的init.php
注意:未定义的变量:db in/第10行上的init.php
警告:mysqli_real_escape_string((要求参数1为mysqli,在中给定null/第10行上的init.php
这是我使用的代码:
require 'database/connection.php';
error_reporting(E_ALL);
ini_set('display_errors',1);
session_start();
function makeSafe($safe)
{
$safe = mysqli_real_escape_string($db, $safe);
return $safe;
}
$db变量是在connection.php中定义的,所以它应该正常工作吗?出于某种原因,它无法识别我在connection.php 中使用的mysqli
$host = '...';
$username = '...';
$password = '...';
$dbnaam = '...';
$db_error1 = '...';
$db_error2 = '...';
// Verbinden met Databaseserver
$db=mysqli_connect($host, $username, $password, $dbnaam) or die($db_error1);
// Verbinden met Database
mysqli_select_db($db, $dbnaam) or die($db_error2);
这对我来说一直都很好。所以我不明白我在这里做错了什么。非常感谢您的帮助。
function makeSafe($safe)
{
global $db;
$safe = mysqli_real_escape_string($db, $safe);
return $safe;
}
function makeSafe($safe)
{
global $db;
$safe = mysqli_real_escape_string($db, $safe);
return $safe;
}
或
function makeSafe($db,$safe)
{
$safe = mysqli_real_escape_string($db, $safe);
return $safe;
}
一个好的方法可能是这样的:
外部文件
<?php
$host = '...';
$username = '...';
$password = '...';
$dbnaam = '...';
$db_error1 = '...';
$db_error2 = '...';
// Verbinden met Databaseserver
$db=mysqli_connect($host, $username, $password, $dbnaam) or die($db_error1);
// Verbinden met Database
mysqli_select_db($db, $dbnaam) or die($db_error2);
return $db;
主文件:
<?php
$db = require('database/connection.php');
... the rest of the code ...
请注意,要在函数中使用$db,必须使用global
关键字。