Php 点击数。错误:mysql_num_rows()希望参数1是资源
可能重复:Php 点击数。错误:mysql_num_rows()希望参数1是资源,php,mysql,ip,counter,mysql-num-rows,Php,Mysql,Ip,Counter,Mysql Num Rows,可能重复: 嘿,我正在制作一个独特的点击计数器 <?php $ip_add = $_SERVER['REMOTE_ADDR']; function ip_exists($ip){ global $ip_add; $query = "SELECT 'ip_count' from 'count_ip' where 'ip_count' = '$ip_add'"; $query_run = mysql_query($query); $query_num_rows = my
嘿,我正在制作一个独特的点击计数器
<?php
$ip_add = $_SERVER['REMOTE_ADDR'];
function ip_exists($ip){
global $ip_add;
$query = "SELECT 'ip_count' from 'count_ip' where 'ip_count' = '$ip_add'";
$query_run = mysql_query($query);
$query_num_rows = mysql_num_rows($query_run);
if($query_num_rows == 0){
return false;
}
else if($query_num_rows >= 1){
return true;
}
}
if(ip_exists($ip_add)) {
echo " exists";
} else {
echo "doesnt";
}
...
此处显示错误:
Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in
C:\wamp\www\php\Hit Counter\index.php on line 18
$query_num_rows = mysql_num_rows($query_run);
首先,我们在错误消息中看到,给定了一个
布尔值
——为SELECT查询返回布尔值的唯一原因是如果查询失败——它会这样做,因为SQL中有语法错误。您需要将一些单引号更改为反勾号:
$query = "
SELECT `ip_count`
FROM `count_ip`
WHERE `ip_count` = '$ip_add'
";
对象名称(列、表等)应使用反勾号“,”任何以单引号括起来的内容都被视为文字字符串
您需要检查查询是否失败:
$query_run = mysql_query($query);
if (!$query_run) {
// Handle error here
}
$query_num_rows = mysql_num_rows($query_run);
一些补充意见:
- 试着更合理地缩进代码,从长远来看,这将使调试更加容易
- 避免使用全局变量,这是非常糟糕的做法,尤其是当您用已经存在的数据填充它们时
- 不要使用
函数,请使用或mysql.*
布尔值
-为SELECT查询返回布尔值的唯一原因是如果查询失败-它会这样做,因为SQL中有语法错误。您需要将一些单引号更改为反勾号:
$query = "
SELECT `ip_count`
FROM `count_ip`
WHERE `ip_count` = '$ip_add'
";
对象名称(列、表等)应使用反勾号“,”任何以单引号括起来的内容都被视为文字字符串
您需要检查查询是否失败:
$query_run = mysql_query($query);
if (!$query_run) {
// Handle error here
}
$query_num_rows = mysql_num_rows($query_run);
一些补充意见:
- 试着更合理地缩进代码,从长远来看,这将使调试更加容易
- 避免使用全局变量,这是非常糟糕的做法,尤其是当您用已经存在的数据填充它们时
- 不要使用
函数,请使用或mysql.*
mysql\u query()
返回一个布尔值,无论查询是否成功。如果要传入正确的参数,需要将连接处理程序分配给一个变量,然后传入该变量
$conn = mysql_connect()...
...
$query_num_rows = mysql_num_rows($conn);
不过你不应该再使用mysql.*
函数了!请看我对你问题的评论mysql\u query()
返回一个布尔值,无论查询是否成功。如果要传入正确的参数,需要将连接处理程序分配给一个变量,然后传入该变量
$conn = mysql_connect()...
...
$query_num_rows = mysql_num_rows($conn);
不过你不应该再使用
mysql.*
函数了!请看我对你问题的评论测试您的查询
,以确保其正确执行:
<?php
...
$query_run = mysql_query($query);
if (!$query_run) {
die('Invalid query: ' . mysql_error());
} else {
// continue your code
}
?>
这样,如果查询失败,您可以获得一些反馈以进行分析
请参见:,#1无效查询测试您的
查询
,以确保其正确执行:
<?php
...
$query_run = mysql_query($query);
if (!$query_run) {
die('Invalid query: ' . mysql_error());
} else {
// continue your code
}
?>
这样,如果查询失败,您可以获得一些反馈以进行分析
请参见:,#1无效查询实际上,该查询存在语法错误,导致$Query_run()返回错误,而不是实际输出。在查询中使用引号时必须小心。按如下方式替换查询:
$query = "SELECT ip_count from count_ip where ip_count='$ip_add'";
如果$ip_add不是一个字符串,那么也要避免使用单引号。如果要写入字段名或表名,请避免使用引号。只有在写入字符串时才需要引号。实际上,查询存在语法错误,导致$query\u run()返回错误,而不是实际输出。在查询中使用引号时必须小心。按如下方式替换查询:
$query = "SELECT ip_count from count_ip where ip_count='$ip_add'";
如果$ip_add不是一个字符串,那么也要避免使用单引号。如果要写入字段名或表名,请避免使用引号。只有在编写字符串时才需要引号。count\u ip table的表结构是什么?请停止使用古老的
mysql\u*
函数编写新代码。它们不再得到维护,社区已开始恢复。相反,您应该学习准备好的语句,并使用或。如果您想学习,.count_ip table的表结构是什么?请停止使用古老的mysql.*
函数编写新代码。它们不再得到维护,社区已开始恢复。相反,您应该学习准备好的语句,并使用或。如果你想学的话,。很棒的回答,真的印象深刻:)谢谢。很好的回答,真的印象深刻:)谢谢