我有3个表,其中我问的第一个表(用户)得到这样的结果:修正错误
$String_users='19,20,21,22,25,26,27,28,29,30,31,32,33,34';
,我想通过其他两个朋友来过滤和freinds_request和删除IDS在这些数字让我CUD做一些事情以后,但我不太了解它返回此错误:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\cebs\include\functions.php on line 825
然后我试图运行从SQL命令查询 - phpMyAdmin来看看什么是错的:
SELECT id FROM users WHERE id NOT IN
(SELECT user_one,user_two FROM friends WHERE (user_one='18' AND user_two IN('19,20,21,22,25,26,27,28,29,30,31,32,33,34'))
OR (user_one IN('19,20,21,22,25,26,27,28,29,30,31,32,33,34') AND user_two='18'))
AND id NOT IN(SELECT to_user,from_user FROM friend_reqest WHERE (to_user='18' AND from_user IN('19,20,21,22,25,26,27,28,29,30,31,32,33,34') OR (to_user IN('19,20,21,22,25,26,27,28,29,30,31,32,33,34') AND from_user='18'))
)
)
但MySQL表示:
#1241 - Operand should contain 1 column(s)
下面
是我的PHP代码也:
function somepeopleyoumayknow(){
global $dbc_conn, $IsLoggIn,$table_name,$friend_request_table,$friends_table ;
$cu_school = getuser($IsLoggIn,'cell_group');
//assuming $IsLoggIn is equal to 18...
$peopleids= mysqli_query($dbc_conn,"SELECT id FROM $table_name WHERE id !='$IsLoggIn'");
$sql_num_rows = mysqli_num_rows($peopleids);
if($sql_num_rows > 0){
while($run_peopleids= mysqli_fetch_array($peopleids)){
$users_ids[] = $run_peopleids['id'];
}
$string_users = implode(',',$users_ids);
$sql = "SELECT id FROM $table_name WHERE id NOT IN
(SELECT user_one,user_two FROM $friends_table WHERE (user_one='$IsLoggIn' AND user_two IN($string_users))
OR (user_one IN($string_users) AND user_two='$IsLoggIn'))
AND id NOT IN(SELECT to_user,from_user FROM $friend_request_table WHERE (to_user='$IsLoggIn' AND from_user IN($string_users) OR (to_user IN($string_users) AND from_user='$IsLoggIn'))
)";
$filter_id_query = mysqli_query($dbc_conn,$sql);
$fnrows = mysqli_num_rows($filter_id_query);
if($fnrows > 0){
while($run_fiq=mysqli_fetch_array($filter_id_query)){
$uid[] = $run_fiq['id'];
}
echo $filtered_id_users = implode(',',$uid);
}
}
}
下面
存储表和数据:
我该如何解决这个问题?谢谢。
回应您的查询并直接运行到phpmyadmin并检查您的查询错误 – Saty
也许您需要使用'left join'或'inner join'来获取结果...您可以显示结构数据库。 – Naumov
**警告**:使用'mysqli'时,您应该使用参数化查询和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)来添加用户数据到您的查询。 **不要**使用手动转义和字符串插值或串联来实现此目的,因为如果您忘记正确地转义某些内容,您将创建严重的[SQL注入漏洞](http://bobby-tables.com/)。 – tadman