我有这个数组并从 url 获取它。这个数组是我需要传递给 mysql 的成员 ID。
$member_id = $_GET['member_id'];
这样的数组:Array ( [0] => 1269 [1] => 385 )
我如何将这个数组转移到我的 mysql 语句中并使 , 成为 AND :
$answer_sql = mysql_query("SELECT tna_category. * , tna_question. *, tna_answer. *
FROM tna_category, tna_question, tna_answer
WHERE tna_category.section_id = '$section_id1'
AND tna_question.id = tna_answer.question_id AND tna_question.category_id = tna_category.id
AND tna_answer.member_id = ['1269' , '385']
ORDER BY tna_answer.question_id");
我应该放括号吗?..
在这部分:tna_answer.member_id = Array or $member_id
最佳答案
正如其他人所说,您可以使用 IN()
但您显然对 SQL 注入(inject)攻击持开放态度。你需要这样做:
$escaped_ids = array_map('mysql_real_escape_string', $member_ids);
或者,如果它们肯定都是整数
$escaped_ids = array_map('intval', $member_ids);
然后,您可以像这样编写查询:
$query = "SELECT tna_category. * , tna_question. *, tna_answer. *
FROM tna_category, tna_question, tna_answer
WHERE tna_category.section_id = '" . mysql_real_escape_string($section_id1) . "'
AND tna_question.id = tna_answer.question_id
AND tna_question.category_id = tna_category.id
AND tna_answer.member_id IN (".implode(",", $escaped_ids).")
ORDER BY tna_answer.question_id";
永远,永远,永远不要在查询中放置未转义的值。
此外,您不应再使用 mysql_
函数。请考虑改用 mysqli_
函数。
关于PHP:如何将数组值插入到mysql语句中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21544678/