-2

1 は機能し、2 は機能しないのはなぜですか????

1

$temp = mysql_query("SHOW DATABASES LIKE "."'"."cwed"."'",$con);
$check = mysql_num_rows($temp)>0;

2

  $tmp = mysql_real_escape_string('SHOW DATABASES LIKE "cwed"');
  $temp = mysql_query($tmp,$con); 
  $check = mysql_num_rows($temp)>0;

問題は、mysql_num_rows($temp) をチェックしているときにエラーが発生することです

警告: mysql_num_rows() は、パラメーター 1 がリソースであると想定します。21 行目の C:** * \ で指定されたブール値です。

したがって、クエリがリソースの代わりにブール値を返すことがわかりました。これは、この場合、$temp が値 0 のリソースではなくブール値であることがわかりました。端末をチェックインすると、セットが 0 であると表示されました。 0 ではなく bool を取得しています

4

3 に答える 3

5

問題は、mysql_escape_string2番目の例の呼び出しで、引用符を変更していることです。tmp をエコーアウトすると、変換中であることがわかります

SHOW DATABASES LIKE "cwed"

SHOW DATABASES LIKE \"cwed\"
于 2013-06-20T05:37:36.607 に答える
1

mysql_real_escape_string()\x00、 MySQL\nのライブラリ関数 mysql_real_escape_string を呼び出します。この関数\rは、、、、、、、および. 説明書からです。それがあなたのコードが機能していない理由です。\'"\x1a

あなたのコードは次のようになります:-

$query = 'SHOW DATABASES LIKE "cwed"';
$temp = mysql_query($query,$con); 
$check = mysql_num_rows($temp)>0;
于 2013-06-20T05:47:37.747 に答える
-1

削除するmysql_real_escape_string

$tmp = mysql_real_escape_string('SHOW DATABASES LIKE "cwed"');
var_dump($tmp);
exit();

//string(28) "SHOW DATABASES LIKE \"cwed\"" 
于 2013-06-20T05:38:56.380 に答える