PHP:如何将数组值插入到mysql语句中

标签 php mysql arrays

我有这个数组并从 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/

相关文章:

php - 如何在 PHP 中模拟单精度浮点运算?

php - Azure AD 身份验证问题 - 不记名 token 仅返回应用程序信息

javascript - 从原始查询中解析模型和关联 hasMany

MySql - 如何获取上一行的值和下一行的值?

javascript - 获取 Javascript 数组的唯一值

java - 如何返回取消引用的数组?

javascript - Array.prototype.indexOf 被添加到 IE8 中的数组末尾

php - 如何根据 strip 发票对象找出所使用的付款方式?

php - 使用 JS 和 PHP (MySQL) 实时检查用户名的安全性

php - MySQL, PHP 传递 ORDER BY 参数