2012-04-15 10 views
0

エラーが発生しました。エラーログのmysql_num_rows

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

私のコードはfollowsL ライン96通りである:

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

何このエラーを引き起こす可能性があり、次のように私のログはありますか?

+0

[多くの重複](http://stackoverflow.com/search?q=mysql_num_rows%28%29%3A+supplied+argument+is+not++a+valid+MySQL+result+resource+in) –

答えて

0

あなたが互いに直接に二つの機能を置く:

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を参照してください。

+0

ありがとう、私はこれを行います。 –

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サーバへの接続を作成していますか?

+0

もちろん、正常に動作しますが、ログを1日1回確認するとエラーが表示されます。 –

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()を使用してエラーを調べることができます。

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); 

をやってみてください。そして何が起こるかを参照してください。