0
<?php
$con=mysqli_connect("localhost","root","123456","astralms");

if (mysqli_connect_errno())
  {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
  }

$username = htmlspecialchars(mysql_real_escape_string($_GET['username']));

$result = mysqli_query($con,"SELECT * FROM accounts WHERE name = '$username'");

while($row = mysqli_fetch_array($result))
  {
    echo $row['gm'];
    echo "<>";
    echo $row['vpoints'];
    echo "<>";
    echo $row['ACash'];
   }
?>

これは私のコードです。すべての情報は 100% 正しいです。ただし、パスワードを入力したにもかかわらず、入力しなかったように動作します。

なぜですか?ありがとう!

4

2 に答える 2

3

接続がmysqliあるので、mysql_real_escape_string() を使用する代わりに、mysqli_real_escape_string()

表示されているエラーは、mysql_real_escape_string() が独自の接続を確立しようとしていることが原因です。これは、古い API を使用した接続がアクティブでないためです。

EDIT:mysqli_real_escape_stringデータベースへの接続を最初のパラメータとして取るので、あなたの場合は次のように呼び出します。

mysqli_real_escape_string($con, $_GET['username'])
于 2013-08-17T07:47:43.443 に答える
3

への呼び出しに、古い非推奨のmysql関数への呼び出しを使用していますmysql_real_escape_string

2 つの拡張機能の接続は異なります。混在させないでください。

エスケープ関数の呼び出しにはアクティブな接続が必要です。これは、エスケープ関数が現在のエンコーディング設定を認識している必要があるためです。mysql 拡張機能には接続がなく、php.ini からのデフォルト パラメータで接続を開いています。幸いなことに、これらでは機能しませんでした。

于 2013-08-17T07:48:19.227 に答える