Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.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 IN子句?_Php_Sql_Arrays_Postgresql - Fatal编程技术网

Php 从数组中选择SQL IN子句?

Php 从数组中选择SQL IN子句?,php,sql,arrays,postgresql,Php,Sql,Arrays,Postgresql,我有一张单子 $list = array('a','b','c','d','e','f'); $filter_list = join(", " $list); select * from test where id_col=12 and try_col in ($filter_list); 任何人都可以告诉我怎么做 $list = array('a','b','c','d','e','f'); $filter_list = "'" . join("', '", $list) . "'"; $q

我有一张单子

$list = array('a','b','c','d','e','f');
$filter_list = join(", " $list);
select * from test where id_col=12 and try_col in ($filter_list);
任何人都可以告诉我怎么做

$list = array('a','b','c','d','e','f');
$filter_list = "'" . join("', '", $list) . "'";
$query = "select * from test where id=12 and try_col in ($filter_list)";
// select * from test where id=12 and try_col in ('a', 'b', 'c', 'd', 'e', 'f')
请注意,如果数组值包含
,则此操作将失败。以下是一个解决方法:

$list = array("a'a",'a\a','b','c','d','e','f');
$temp = array_map("addslashes", $list);
$query = "SELECT * FROM test WHERE id=12 AND try_col in ('" . implode("','", $temp) . "')";
// SELECT * FROM test WHERE id=12 AND try_col in ('a\'a','a\\a','b','c','d','e','f')
请注意,如果数组值包含
,则此操作将失败。以下是一个解决方法:

$list = array("a'a",'a\a','b','c','d','e','f');
$temp = array_map("addslashes", $list);
$query = "SELECT * FROM test WHERE id=12 AND try_col in ('" . implode("','", $temp) . "')";
// SELECT * FROM test WHERE id=12 AND try_col in ('a\'a','a\\a','b','c','d','e','f')

“try-in$list”部分是什么意思?请提供更多信息,您使用的是哪个数据库以及如何与之交互?mysql?mysqli?PDO?试一试$list部分是什么意思?请提供更多信息,您使用的是哪个数据库以及如何与之交互?mysql?mysqli?PDO?您还应该确保转义这些值,以便在SQL语句中正确使用它们。
addslashes
应作为字符串引用。而且,使用他的数据库特定的转义函数要好得多。当字符串被
addslashes
引用并且不知道语言环境时,有几种方法可以利用SQL注入。此外,对于不同的RDBMS,转义某些字符的正确方法可能不同。这就是为什么我问他关于他的数据库和他用来与之交谈的API的原因。我使用的是postgreSQL数据库。使用PDO或
pg
函数?@shesek:谢谢,我还以为我在写jQuery代码呢!按照shesek的建议排队,我鼓励您使用。我没有postgres扩展名,因此无法进行测试。您还应确保转义这些值,以便在SQL语句中正确使用它们
addslashes
应作为字符串引用。而且,使用他的数据库特定的转义函数要好得多。当字符串被
addslashes
引用并且不知道语言环境时,有几种方法可以利用SQL注入。此外,对于不同的RDBMS,转义某些字符的正确方法可能不同。这就是为什么我问他关于他的数据库和他用来与之交谈的API的原因。我使用的是postgreSQL数据库。使用PDO或
pg
函数?@shesek:谢谢,我还以为我在写jQuery代码呢!按照shesek的建议排队,我鼓励您使用。我没有博士后分机,因此无法测试。