繁体   English   中英

返回行,其中php和sql中的变量数组中的列

[英]return rows where column in variable array in php and sql

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

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" } 

由于$ task_list是一个数组,因此失败,您应该执行以下操作:

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

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

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM