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的建议排队,我鼓励您使用。我没有博士后分机,因此无法测试。