当我在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()转储了一个我以前从未见过的“表‘ippost’不是用锁表锁定的”,我在我的函数中添加了锁读、写和解锁,现在它可以工作了。我不确定为什么mysql要我在这个函数中锁定它?
发布于 2011-10-20 15:10:43
你有没有尝试:
$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并检查它是否为零(结果,而不是行数)
发布于 2011-10-20 15:09:48
如果将ipaddr列定义为varchar,请尝试使用$query = "SELECT ipaddr FROM ipposts WHERE ipaddr='2149856614'";
https://stackoverflow.com/questions/7832309
复制相似问题