我遇到了以下问题。我的代码是这样的:
//connection to the database
$dbhandle = mysql_connect($hostname, $username, $password)
or die("Unable to connect to MySQL");
echo "Connected to MySQL<br>";
mysql_select_db($mysql_database,$dbhandle);
$today = date('Y-m-d');
$queryfirst = "SELECT * FROM `database`.`sm2014` WHERE pvm='$today'";
echo $queryfirst;
$result = mysql_query("$queryfirst")|| die(mysql_error());
//fetch tha data from the database
if (!$result) {
$message = 'Invalid query: ' . mysql_error() . "\n";
$message .= 'Whole query: ' . $queryfirst;
die($message);
}
if($result === FALSE) {
die(mysql_error()); // TODO: better error handling
}
$num_rows = mysql_num_rows($result);
我在页面上的输出是:
Connected to MySQL
SELECT * FROM `database`.`sm2014` WHERE pvm='2014-12-09'
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /*path*/2014/index.php on line 86
所以,我没有得到错误,我试图在PhpMyAdmin中通过php生成的复制粘贴运行的mysql查询,它完美无缺。我尝试了不同的查询:
SELECT * FROM `database`.`sm2014` WHERE pvm='2014-12-09'
SELECT * FROM `database`.`sm2014` WHERE pvm=2014-12-09
SELECT * FROM sm2014 WHERE pvm='2014-12-09'
SELECT * FROM `sm2014` WHERE pvm='2014-12-09'
并且它们的不同组合,仍然不起作用。 我试过把这个查询放入php页面:
$queryfirst = "SELECT * FROM `database`.`sm2014` WHERE pvm='2014-12-09'";
它也会出错。在数据库中,pvm是DATE类型。
答案 0 :(得分:1)
我认为你的错误就在这里:
$result = mysql_query("$queryfirst")|| die(mysql_error());
尝试没有像这样的“”:
$result = mysql_query($queryfirst) || die(mysql_error());
答案 1 :(得分:1)
您应该在此处使用运算符or
而不是||
:
$result = mysql_query("$queryfirst")|| die(mysql_error());
这是因为运营商的优先权。 “||”优先级高于“=”,而“或”的优先级低于“=”。
所以当你这样做时
$r = exp1 || exp2;
它会像
一样 $r = ($exp1 || $exp2);
,结果将始终为布尔值。
当你这样做时
$r = exp1 or exp2;
它会像
一样 ($r = $exp1) or $exp2;
答案 2 :(得分:0)
运行mysql查询时选择数据库连接:
$result = mysql_query($queryfirst,$dbhandle)|| die(mysql_error());
答案 3 :(得分:0)
我不知道它是如何或为何发生的,但成员“Taalaibek M”是对的。错误在“或”运算符中,我使用“||”并且应该是“或”。我希望有声望的人可以为Taalaibek M.投票。 非常感谢你,关闭案件。