返回php和sql中变量数组中的列所在的行

时间:2016-09-16 15:47:23

标签: php sql arrays

我正在编写一个查询,当其中一列的值与数组的任何元素匹配时,它将返回记录。如果我使用静态数组,它可以工作(参见示例):

sql = "SELECT *
        FROM tasks
            WHERE
            tasks.type IN ('homework', 'chores', 'laundry')";

如果我要从比较中使用的用户输入中填充一系列任务,该怎么办?像这样:

$task_list = //declaration and populate the array. I know it works, so I'm skipping it

sql = "SELECT *
            FROM tasks
                WHERE
                tasks.type IN "+$task_list+" ";

这给了我一个错误。 我真的不擅长将php与sql混合并且搜索答案...也许我无法正确搜索正确的语法。

对于那些想知道的人,var_dump($task_list);打印以下内容:

array(3) { [0]=> string(8) "homework" [1]=> string(6) "chores" [2]=> string(7) "laundry" } 

1 个答案:

答案 0 :(得分:2)

失败是因为$ task_list是一个数组,你应该这样做:

$task_list_str = sprintf('"%s"', implode('", "', $task_list));
$sql = 'SELECT *
       FROM tasks
       WHERE
           tasks.type IN (' . $task_list_str . ')';

它有点令人费解,但它与代码保持尽可能接近。

希望这有帮助。