使用mysqli_num_rows而不是mysql_num_row

时间:2014-03-19 09:35:52

标签: php

我搜索了问题但我无法解决此问题,我看到了这个错误:

  
    

警告:mysqli_num_rows()要求参数1为mysqli_result,第13行的C:\ Program Files \ EasyPHP \ 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。

4 个答案:

答案 0 :(得分:3)

您的SQL查询中有错误。这就是为什么mysqli_query()不会返回mysqli_result,而是返回bool的原因。运行mysqli_error($con)。这将为您提供错误的描述。在这种情况下,您在查询中的$user_ip变量周围缺少引号。这应该纠正它:

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

答案 1 :(得分:2)

尝试:

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

在搜索ip时缺少单引号,虽然您的查询似乎很奇怪,因为您正在检索与您正在搜索的ip完全相同的内容。在这种情况下,为什么不使用$user_ip代替!?

答案 2 :(得分:1)

您应该删除全局$ user_ip;

该函数采用全局$ user_ip而不是函数头

中传递的参数

也是imo,有或没有引号应该工作

答案 3 :(得分:1)

您的查询字符串存在问题..

使用 mysqli_error()函数在代码中显示错误。 link

$query = "SELECT ip FROM hits_ip WHERE ip = $user_ip";
echo mysqli_error();
$query_run = mysqli_query($con,$query);

使用

更改查询字符串
$query = "SELECT ip FROM hits_ip WHERE ip =". $user_ip;