2012-06-16 34 views
-4

这是我到目前为止有:多个和/或条款被绊倒我

$checkbonus = mysql_query("Select theurl from `vaultpromo` where (accid=0 or accid=$acctype) and (shownum=$clickstoday or (showtype=1 and ($clickstoday%shownum=0))) AND 
(startdate<$today AND enddate>$daytime) OR (startdate=$today AND starttime<=$currenttime AND enddate>$daytime) limit 1"); 

if (mysql_num_rows($checkbonus) > 0) { 
    DO SOMETHING 
} 

但我收到此错误:

Warning: mysql_num_rows() expects parameter 1 to be resource, 
boolean given in... 

任何帮助将不胜感激!

一切正常,直到这一部分:

(startdate<$today AND enddate>$daytime) OR (startdate=$today AND starttime<=$currenttime AND enddate>$daytime) limit 1"); 

我已经检查并正在检查表中的正确行,今天我已经定义,$白天和$ CURRENTTIME之前,为了与此查询:

$today=date("Y-m-d"); 

$currenttime=date("H:i:s"); 

$daytime=date("Y-m-d H:i:s"); 
+2

格式化您的代码请!不要依赖社区为您设置代码格式! – Cranio

+0

你正在关闭太多版本 – phpmeh

+2

请不要使用'mysql_ *'函数来编写新代码。他们不再维护,社区已经开始[弃用程序](http://goo.gl/KJveJ)。查看[*红色框*](http://goo.gl/GPmFd)?相反,您应该了解[准备好的语句](http://goo.gl/vn8zQ)并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能决定哪些,[这篇文章](http://goo.gl/3gqF9)会帮助你。如果你选择PDO,[这里是很好的教程](http://goo.gl/vFWnC)。 –

回答

2

原因是您的查询无效。 所以它返回False,一个布尔值,而不是结果集。

mysql_num_rows()不期望一个布尔值,但结果集,所以它发出警告。

检查是否所有的PHP变量都被赋值或者其中的某个变量是空的。

编辑:例如,如果$acctype是空的,查询变得像

Select theurl from `vaultpromo` where (accid=0 or accid=) and (... 
                ^^^^^^ 

请确保每一个变量的值,检查,避免奇怪的情况...

0

你应该做这样的事情:

$checkbonus = mysql_query("Select theurl from `vaultpromo` where (accid=0 or 
accid=$acctype) and (shownum=$clickstoday or (showtype=1 and     
($clickstoday%shownum=0))) AND 
(startdate<$today AND enddate>$daytime) OR (startdate=$today AND 
starttime<=$currenttime AND enddate>$daytime) limit 1"); 


//Check resultset variable if it contain data or not. 
if($checkBonus) 
{ 
    if (mysql_num_rows($checkbonus) > 0) { 
     //DO SOMETHING 
    } 
} 
else 
{ 
    die('Invalid query: ' . mysql_error()); 
} 

你是GET ting这个错误“警告:mysql_num_rows()期望参数1是资源,布尔在...中给出”,因为变量$checkbonus不包含数据库资源并且返回False,因为您的查询确实成功运行。

您的查询很可能包含错误,因为其中一个或多个变量为空或未转义,导致查询中出现错误。

顺便说一句,我强烈建议你看看使用PDO库。