Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 点击数。错误:mysql_num_rows()希望参数1是资源_Php_Mysql_Ip_Counter_Mysql Num Rows - Fatal编程技术网

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.*
函数编写新代码。它们不再得到维护,社区已开始恢复。相反,您应该学习准备好的语句,并使用或。如果你想学的话,。很棒的回答,真的印象深刻:)谢谢。很好的回答,真的印象深刻:)谢谢