0

文字列をエスケープするmysql関数があります。私は終わりのないエラーに悩まされ続けています。フィードは次のように吐き出します。

警告: mysqli_real_escape_string() は、パラメーター 1 が mysqli であると想定します。39 行目の /home/shipstud/public_html/post_auth.php で指定された null です。

これを修正する方法についてのアイデアをいただければ幸いです。以下に関連するコードを添付しました。

//connect to server and database
$db=mysqli_connect('***','***','***','***');

// check connection
if (mysqli_connect_errno()) {
    echo "Connect failed";
    exit();
}



//parameter checking
$username = safe(stripslashes(trim($_POST['username'])));


//sanitize input parameters
function safe($value)
{
    $secureString = mysqli_real_escape_string($db, $value);

   return $secureString;
} 
4

2 に答える 2

5

$db 変数を関数のスコープにインポートしていません。

function safe($value)
{
   global $db;

   $secureString = mysqli_real_escape_string($db, $value);

   return $secureString;
}

または、変数を引数として渡すこともできます。

于 2013-07-07T20:55:11.647 に答える
1

$db変数は のスコープ内にありませんsafe()。試す:

$username = safe($db, stripslashes(trim($_POST['username'])));

function safe($db, $value)
{
    $secureString = mysqli_real_escape_string($db, $value);

   return $secureString;
} 

またはおそらくよりきれいです:

function safe($db, $value)
{
    $secureString = $db->real_escape_string($value);

   return $secureString;
} 
于 2013-07-07T20:55:20.193 に答える