यहाँ समस्या (और दूसरे उत्तर के साथ) यह है कि in
क्लॉज उद्धरणों से घिरा हुआ था, जिससे वह परिणाम नहीं मिलेगा जो हम चाहते हैं। हमें क्वेरी के लिए एक सरणी में प्रभावी ढंग से पास करने की आवश्यकता है। साथ ही आपका कोड sql इंजेक्शन के प्रति संवेदनशील है . मैं दृढ़ता से पीडीओ/तैयार बयानों में जाने का सुझाव दूंगा। मैंने एक मामूली जोड़ा देशों के लिए सुरक्षा, लेकिन यह किसी भी तरह से मूर्खतापूर्ण नहीं है।
function prepareForSql($value, $key) {
return addslashes($value);
}
array_walk($_POST["chkUnr"], "prepareForSql");
$search_country = "'" . implode("','", $_POST["chkUnr"]) . "'";
$query = "";
$query .= "SELECT users.* FROM users";
if (isset($_POST['singles_online']) ? $_POST['singles_online'] : 0 == 1) {
$query .= " LEFT JOIN online ON online.user_id = users.id";
}
$query .= " WHERE";
if (isset($_POST['vip']) ? $_POST['vip'] : 0 == 1) {
$query .= " users.vip = 1 AND";
}
if (isset($_POST['profile_image']) ? $_POST['profile_image'] : 0 == 2) {
$query .= " users.profile_image = '2' AND";
}
if (isset($_POST['singles_online']) ? $_POST['singles_online'] : 0 == 1) {
$query .= " online.is_online = 1 AND";
}
$query .= " (id NOT IN (SELECT user_id FROM users_blocked WHERE blocked_id = '$user_id')) AND";
$query .= " (users.user_age >= '$age_from' AND users.user_age <= '$age_to') AND";
$query .= " (users.gender = '$gender_search') AND";
$query .= " users.country IN ($search_country)";
$search_query = mysql_query($query);