0

次のコードがあります。

$sql = mysql_query("SELECT id FROM logins WHERE id='" . $this->skID . "'");

if(mysql_num_rows($sql) == 0) { return false; }
else {
      list($skID) = mysql_fetch_row($sql);
      return $skID;
}    

以下のエラーが返されます。

mysql_num_rows(): 指定された引数は有効な MySQL 結果リソースではありません

SQL をエコーアウトし、これをデータベースで実行すると結果が得られたので、何が問題なのか - アイデアは大歓迎ですか?

[編集] 申し訳ありませんが、ms データベースで mysql 関数を使用しようとしている、絶対的なばかです! ごめん!

4

4 に答える 4

1

接続が確立されていることを確認しましたか。おそらく、クエリの後にクエリ結果を出力してみてください。また、mysql_error()をエコーし​​て、問題が発生したかどうかを確認してください。

echo mysql_error();

クエリの直後。

于 2011-11-03T12:42:13.323 に答える
1

a correct way of running queries (along with consistent variable naming):

$sql    = "SELECT id FROM logins WHERE id='" . (int)$this->skID . "'";
$result = mysql_query($sql) or trigger_error(mysql_error." in ".$sql);

this code will tell you what is wrong with your query.

using die() is not recommended as it will break your code execution and make the page looks messy. not to mention that unconditional output of the error message to the screen is a security flaw.

于 2011-11-03T12:50:51.083 に答える
0

変化する

$sql = mysql_query("SELECT id FROM logins WHERE id='" . $this->skID . "'");

if (!$sql = mysql_query("SELECT id FROM logins WHERE id='" . $this->skID . "'")) {
  // handle error here
  // for example:
  die('MySQL Error: '.mysql_error());
  // ...but don't show the result of mysql_error() in a production environment!!
}

クエリは失敗し、をmysql_query()返しFALSEmysql_num_rows()ブール値ではなく結果リソースを期待するため、表示されているエラーが発生します。

于 2011-11-03T12:41:52.563 に答える
0

クエリが失敗しています。mysql_errnoで理由を確認してください

http://us2.php.net/mysql_errno

于 2011-11-03T12:42:20.883 に答える