-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 . "'");

接下来,在 PHP 中返回一个数组而不是日期字符串,当作为字符串传递给查询时getdate(),它会为您的查询提供单词。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 回答