-2

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given以下のコードを使用しようとすると、エラーが発生します。

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 />";
  }
4

3 に答える 3

1

テーブル名を一重引用符で囲み'ました。引用する場合は、バッククォートを使用してください。一重引用符は、MySQL の文字列リテラル専用です。これにより、クエリで構文エラーが発生します。

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

次に、getdate()PHP では、日付文字列ではなく配列を返します。これは、クエリにArray文字列として渡されたときにクエリに単語を提供します。代わりに、MySQL のネイティブ日付関数を使用して、MySQL が期待する形式 (yyyy-mm-dd) で今日の日付を取得します。

コメントの後に編集:

日付列ではなく UNIX タイムスタンプがあるため、日付の Unix タイムスタンプを作成します。

where user_regdate = UNIX_TIMESTAMP(GETDATE())

呼び出しのエラー チェックを少し行うだけmysql_query()で、クエリのエラーの原因が明らかになり、スクリプトが致命的に失敗するのを防ぐために必要です。

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

于 2012-05-03T02:05:40.780 に答える
0

クエリがエラーになっています。http://php.net/manual/en/function.mysql-query.phpから:

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

于 2012-05-03T02:08:41.573 に答える
0

0 行を返すため、mysql_num_rows() 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;
if(mysql_num_rows($result)){
while($row = mysql_fetch_array($result))
  {
  $total++;
  echo $row['username'];
  echo "<br />";
  }
}
于 2012-05-03T05:02:18.050 に答える