当我在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


并检查它是否为零(结果,不是行数)

10-08 04:42