Php 使用mysqli_num_行而不是mysql_num_行

Php 使用mysqli_num_行而不是mysql_num_行,php,Php,我搜索了有关问题的信息,但无法解决此代码,我看到以下错误: 警告:mysqli_num_rows()要求参数1为mysqli_结果,布尔值在第13行的C:\Program Files\EasyHP\www\test\index.php中给出 这是我的PHP代码: <?php $user_ip = $_SERVER['REMOTE_ADDR']; function ip_exists($ip) { $con = mysqli_connect("localhost","root",""

我搜索了有关问题的信息,但无法解决此代码,我看到以下错误:

警告:mysqli_num_rows()要求参数1为mysqli_结果,布尔值在第13行的C:\Program Files\EasyHP\www\test\index.php中给出

这是我的PHP代码:

<?php
$user_ip = $_SERVER['REMOTE_ADDR'];
function ip_exists($ip) {
    $con = mysqli_connect("localhost","root","","ok");
    if (mysqli_connect_errno()) {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }
    global $user_ip;
    $query = "SELECT ip FROM hits_ip WHERE ip = $user_ip";
    $query_run = mysqli_query($con,$query);
    $query_num_rows = mysqli_num_rows($query_run);

    if ($query_num_rows==0) {
        return false ; 
    }
    else if($query_num_rows>=1) {
        return true ;
    }
}
if (ip_exists($user_ip)) {
    echo "EXIST";
}
else {
echo "NO ex";
}
?> 

问题是什么?我该怎么办

我想使用mysqli。

试试:

$query = "SELECT ip FROM hits_ip WHERE ip = '" . $user_ip . '"";

搜索ip时缺少单引号,尽管您的查询看起来很奇怪,因为您正在检索与您正在搜索的ip完全相同的
ip
。在这种情况下,为什么不直接使用
$user\u ip

您的SQL查询中有一个错误。这就是为什么
mysqli\u query()
不会返回
mysqli\u结果,而是返回bool。运行
mysqli\u错误($con)
。这将为您提供错误的描述。在这种情况下,查询中的
$user\u ip
变量缺少引号。这应该可以纠正它:

$query = "SELECT ip FROM hits_ip WHERE ip = '$user_ip'";

您应该删除全局$user\u ip

函数采用全局$user_ip,而不是函数头中传递的参数


此外,在我看来,带引号或不带引号都应该有效

您的查询字符串有问题

使用mysqli\u error()函数显示代码中的错误

使用以下命令更改查询字符串:

$query = "SELECT ip FROM hits_ip WHERE ip =". $user_ip;

您的查询的可能重复项似乎失败。你能做一个
echo mysqli_error()吗在查询执行后?@Carsten那么我应该使用什么代码?人们应该在发布问题之前学习如何调试
$query = "SELECT ip FROM hits_ip WHERE ip =". $user_ip;