2012-05-03 60 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 . "'"); 

接下来,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)获得。

+0

好吧,'东西摆脱了错误。我从来没有见过这些。但它仍然没有结果。所以我的猜测是我的sql日期格式是一堆数字。 “1283216436”。我猜测$ date = date('Y-m-d');不提供我需要的这些数字。 – alexander7567

+0

好吧,我试图用这个来修正这个$ result = mysql_query(“SELECT * FROM'”。$ table_prefix。“users' where user_regdate ='”。strtotime($ date)。“'”);.不过,我仍然得到1335931200的日期,当我需要1335973416. – alexander7567

+0

@ alexander7567不要在日期字符串中使用strtotime()。相反,只需使用'$ date = time();'来获得时间戳。理想情况下,应该更改该列以保留适当的日期时间类型,而不是Unix时间戳。 –

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