我有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