我找不到这种问题的解决方案。我需要$ sql变量显示除指定值以外的所有值作为username!= $ var2数组值。
$user_data = user_data($session_user_id, 'user_id', 'username', 'blocked_emails');
$var = $user_data['blocked_emails'];
$var2 = explode(',', $var);
$sql = mysqli_query($con1, "SELECT * FROM `test` WHERE `username` != '$var2' ORDER BY user_id");
while ($row2 = mysqli_fetch_array($sql)) {
$uid = $row2['user_id'];
$username = $row2['username'];
}
答案 0 :(得分:2)
核心问题似乎是SELECT语句应该如何:
SELECT * FROM `test`
WHERE `username` NOT IN ('abc@mailinator.com', 'webmaster@test.test', …)
ORDER BY `user_id`
如何在PHP中生成此语句留给读者练习。 Lajos Arpad的答案提供了一个良好的开端,但使用预准备语句($con1->prepare(…)
)更安全,因此您不必担心值,SQL注入等中的撇号。
答案 1 :(得分:0)
正如雷纳多建议的那样,你不需要像这样:
StudentControllerIT
但是在这个解决方案中,我们假设 $user_data = user_data($session_user_id, 'user_id', 'username', 'blocked_emails');
$var = $user_data['blocked_emails'];
$var2 = explode(',', $var);
for ($index = 0; $index < count($var2); $index++)
$var2 = "'".$var2[$index]."'";
$sql = mysqli_query($con1, "SELECT * FROM `test` WHERE `username` not in (".implode(",", $var2).") ORDER BY user_id");
while ($row2 = mysqli_fetch_array($sql)) {
$uid = $row2['user_id'];
$username = $row2['username'];
}
中没有一个值包含撇号。您需要采取进一步措施来清理查询,以确保它能够很好地处理任何可能的输入并同时防止SQL注入。