我搜索了问题但我无法解决此问题,我看到了这个错误:
警告: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。
答案 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;