0

エラーが発生しました。私のログは次のとおりです。

PHP Warning:  mysql_num_rows(): supplied argument is not 
a valid MySQL result resource in     
/home/domain/public_html/index.php on line 96

私のコードは次のとおりですL行96:

mysql_num_rows(mysql_query("SELECT * FROM `table` WHERE 
UNIX_TIMESTAMP(`date`)>$user_last_visit"));

このエラーの原因は何ですか?

4

4 に答える 4

0

コードを並べ替えてみます

$sql = "SELECT * FROM `table` WHERE UNIX_TIMESTAMP(`date`) > $user_last_visit";
$result = mysql_query($sql) or die(mysql_error());
echo mysql_num_rows($result);

コードからはわかりませんが、mysql サーバーへの接続を作成していますか?

于 2012-04-15T21:44:45.607 に答える
0

行をカウントするだけの場合COUNT(*)は、クエリでキーワードを使用します。それ以外の場合、データベースは結果の行全体を出力用に準備しますが、それらは必要ありません。

SELECT COUNT(*)
FROM `table`
WHERE UNIX_TIMESTAMP(`date`) > $user_last_visit

次に、単純にクエリを実行します。

$result = mysql_query($query);
list($count) = mysql_fetch_array($result);

とにかく、クエリはエラーをスローします。エラーを示す別の警告があるはずです。mysql_error()それ以外の場合は、エラーを見つけるために使用できます。

于 2012-04-15T21:46:06.980 に答える
0

http://php.net/manual/en/function.mysql-query.phpによると、mysql_query は「SELECT、SHOW、DESCRIBE、EXPLAIN、および結果セットを返すその他のステートメントの場合、mysql_query() は成功するとリソースを返し、失敗すると FALSE を返します。エラー。"

だからやってみる

$query = "SELECT * FROM `table` WHERE UNIX_TIMESTAMP(`date`)>$user_last_visit"
$resource = mysql_query($query) or die("Error: ". mysql_error(). " with query ". $query);
mysql_num_rows($resource);

そして、何が起こるか見てください。

于 2012-04-15T21:47:39.887 に答える
0

2 つの関数を直接相互に配置します。

mysql_num_rows(mysql_query(...));

技術的には可能ですが (関数 1 が関数 2 のパラメーターとなる何かを返します)、関数 1 が何かを返し、関数 2 が処理できない場合、エラーが発生します。

それはあなたの場合に起こります。代わりに、戻り値を変数に格納し、独自のエラー処理を行います。

$result = mysql_query(...);
if (!$result) {
    throw new Exception(sprintf('Database query failed: %s', mysql_error()));
}
$num_rows = mysql_num_rows($result);

確実なプログラミングには適切なエラー処理が不可欠なので、戻り値に注意してください。疑わしい場合は、本当に優れたリソースである PHP マニュアルで問題の関数を再確認してください。を参照してくださいmysql_query

于 2012-04-15T21:49:14.487 に答える