当我在mysql控制台中为数据库发出以下查询时,得到以下信息:
mysql> SELECT ipaddr FROM ipposts WHERE ipaddr=2149856614;
+------------+
| ipaddr |
+------------+
| 2149856614 |
| 2149856614 |
| 2149856614 |
+------------+
3 rows in set (0.00 sec)
但是,以下代码段来自我的php:
$query = "SELECT ipaddr FROM ipposts WHERE ipaddr=2149856614";
$result = mysql_query($query);
$rows = mysql_num_rows($result);
if($rows == 0)
return addIP($ip);
每次都调用addIP()。为什么是这样?
编辑
我使用mysql_error()转储了一个在“ TABLE'ipposts'没有被LOCK TABLES锁定”之前从未见过的东西,我在函数中添加了LOCK READ,WRITE和UNLOCK,现在可以正常工作了。我不确定为什么mysql要我在此函数中锁定它?
最佳答案
你试过了吗:
$query = "SELECT ipaddr FROM ipposts WHERE ipaddr=2149856614";
$result = mysql_query($query);
if ($result) {
$rows = mysql_num_rows($result);
if($rows == 0)
return addIP($ip);
}
无论如何,由于您不需要获取记录,而只需获取记录数,因此可以使用其他查询:
SELECT COUNT(ipaddr) FROM ipposts
WHERE ipaddr=2149856614
并检查它是否为零(结果,不是行数)