这是我正在运行的代码。奇怪的是,如果我在PHPMyAdmin中运行完全相同的查询,它运行得很好。
但是对于任何超过19的ID,die()
子句会激活,但mysql_error()
为空,返回的行数为0.
这是我见过的最奇怪的事情,好像我把id放到1到19就可以了。
$sql = "SELECT * FROM booking WHERE `id`='21'";
$res = mysql_query($sql) or die(mysql_error());
if($res)
{
$ct = mysql_num_rows($res) or die(mysql_error());
echo $ct;
}
答案 0 :(得分:4)
看起来和你的“错误”似乎就在这一行:
$ct = mysql_num_rows($res) or die(mysql_error());
有了这个,如果mysql_num_rows($res)
返回0
(意思是“找不到与您的查询匹配的结果”),您的or die(mysql_error())
部分将会执行,并且由于没有实际错误,{{ 1}}将返回空。
尝试删除mysql_error()
部分并更改为更方便用户使用的内容:
die()
答案 1 :(得分:1)
这两件事之一就是在这里工作。
$sql = "SELECT * FROM booking WHERE `id`='21'";
$res = mysql_query($sql) or die(mysql_error());
不是这种情况,因为查询是基本的并且构造良好(尽管非常不安全,请检查PDO和参数化查询)。
$ct = mysql_num_rows($res) or die(mysql_error());
在您的方案中会发生什么,因为您的查询不会返回任何结果 - 请仔细检查上面的内容是否存在ID 19。
在相关的说明中,如果没有找到结果,那么die()是不好的做法。最好向最终用户写一条描述性和信息性的信息,以便他知道发生了什么。