返回php和sql中变量数组中列所在的行
我正在编写一个查询,当其中一列的值与数组的任何元素匹配时,该查询将返回记录。如果我使用静态数组,它可以工作(参见示例): 如果我有一个任务数组,它是从用户输入填充的,我想从比较中使用它,该怎么办?像这样:返回php和sql中变量数组中列所在的行,php,sql,arrays,Php,Sql,Arrays,我正在编写一个查询,当其中一列的值与数组的任何元素匹配时,该查询将返回记录。如果我使用静态数组,它可以工作(参见示例): 如果我有一个任务数组,它是从用户输入填充的,我想从比较中使用它,该怎么办?像这样: $task_list = //declaration and populate the array. I know it works, so I'm skipping it sql = "SELECT * FROM tasks WHER
$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\u dump($task\u 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 . ')';
这有点复杂,但它尽可能远离您的代码
希望这有帮助。如果它有效,那么为什么在sql中它会被破坏?您需要显示生成$task\u list
所做的操作。无论您在其中填充了什么内容到查询中,都必须生成有效的sql。由于出现语法错误,因此它不是有效的sql,并且您的构建代码工作不正常。请注意,+
在PHP中是数学加法,而不是字符串串联。代码相当长。我做了vardump来检查数组内容。我可以把它添加到答案中。问题是我在查询中使用这个数组的方式。它是一个数组,那么你不能把数组塞进字符串。找个时间试试<代码>$x=数组(1)$y=x美元himom'
看看你得到了什么。谢谢,它确实帮了大忙(它完成了任务)。我真的不使用php或sql编程,只是在帮助一位朋友。不过,如果您对如何修改代码使其变得简单有一些建议,我很乐意学习。
$task_list_str = sprintf('"%s"', implode('", "', $task_list));
$sql = 'SELECT *
FROM tasks
WHERE
tasks.type IN (' . $task_list_str . ')';