Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
返回php和sql中变量数组中列所在的行_Php_Sql_Arrays - Fatal编程技术网

返回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 . ')';