2012-05-03 26 views
-2

以下のコードを使用しようとすると、エラーWarning: mysql_fetch_array() expects parameter 1 to be resource, boolean givenが表示されます。MySQLクエリの実行中にエラーが発生しました

include('config.php'); 

$con = mysql_connect($dbhost,$dbuser,$dbpasswd); 
if (!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } else { 
     mysql_select_db($dbname, $con); 
    } 
$date = getdate(); 
$result = mysql_query("SELECT * FROM '" . $table_prefix . "users' where user_regdate = '" . $date . "'"); 
$total = 0; 
while($row = mysql_fetch_array($result)) 
    { 
    $total++; 
    echo $row['username']; 
    echo "<br />"; 
    } 
+1

テーブル名の前後に一重引用符は必要ありません。 –

答えて

1

テーブル名の一重引用符は'です。あなたがそれを引用するなら、バックティックでそれをしてください。一重引用符はMySQLの文字列リテラルのみです。これにより、クエリに構文エラーが発生します。

$result = mysql_query("SELECT * FROM `" . $table_prefix . "users` where user_regdate = '" . $date . "'"); 

次に、PHPでgetdate()は、クエリに文字列として渡されたときに単語Arrayであなたのクエリを提供する日付文字列、ではなく配列を返します。代わりに、MySQLが要求する形式(YYYY-MM-DD)で今日の日付を取得するには、MySQLのネイティブ日付関数を使用します。コメントは後

編集:

を使用すると、UNIXタイムスタンプではなく日付列を持っているので、日付のUnixタイムスタンプを作成します。mysql_query()コールにチェック

where user_regdate = UNIX_TIMESTAMP(GETDATE()) 

少しエラーがクエリでエラーの原因を明らかにし、実際に致命的な失敗からスクリプトを防止する必要があるだろう。

$result = mysql_query("SELECT * FROM `" . $table_prefix . "users` where user_regdate = '" . $date . "'"); 
if (!$result) { 
    // query failed 
    echo mysql_error(); 
} 
else { 
    // all is well, proceed with fetch... 
} 

最後に、行数を$total++に集めていることに注意してください。値がmysql_num_rows($result)で利用可能であるため、これは不要です(表示されない特定のロジックを実行している場合を除きます)。

+0

「エラーがなくなりました。私は前にそれらを見たことがない。しかし、それはまだ結果を返すことはありません。だから私の推測では、私のSQLの日付形式は数字の束です。 "1283216436"。私は$ date = date( 'Y-m-d')と推測しています。私は必要としているこれらの番号を供給しません。 – alexander7567

+0

私はこの代わりにこの$ result = mysql_query( "SELECT * FROM' "。$ table_prefix。" users'をuser_regdate = '"。strtotime($ date)。"' ");に修正しようとしました。しかし、1335973416が必要なときに私はまだ1335931200の日付を取得します。 – alexander7567

+0

@ alexander7567日付文字列に 'strtotime()'を使わないでください。代わりに '$ date = time();'を使ってタイムスタンプを取得してください。理想的には、Unixタイムスタンプではなく、適切なdatetime型を保持するようにその列を変更する必要があります。 –

0

クエリがエラーになりました。 http://php.net/manual/en/function.mysql-query.php

mysql_queryは成功するとリソースを返し、エラー時はfalseを返します。

+0

それは以来です。私の次の質問は、mysqlで今日の日付を検索する方法です。 – alexander7567

+0

@ alexander7567今日のmysqlでは 'select now()'を試すことができます。今日の日付と時刻を返します。 –

0

返す0行のチェックがmysql_num_rows() であるため、( 'config.php');

$con = mysql_connect($dbhost,$dbuser,$dbpasswd); 
if (!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } else { 
     mysql_select_db($dbname, $con); 
    } 
$date = getdate(); 
$result = mysql_query("SELECT * FROM '" . $table_prefix . "users' where user_regdate = '" . $date . "'"); 
$total = 0; 
if(mysql_num_rows($result)){ 
while($row = mysql_fetch_array($result)) 
    { 
    $total++; 
    echo $row['username']; 
    echo "<br />"; 
    } 
} 
関連する問題