使用php在sql查询中传递where条件中的数组
我试图在sql查询中传递数组 数组包含列名作为索引,它们被分配给各自的值,这些值是我使用GET方法得到的 例如,我试图编译以下代码:使用php在sql查询中传递where条件中的数组,php,mysql,sql,arrays,get,Php,Mysql,Sql,Arrays,Get,我试图在sql查询中传递数组 数组包含列名作为索引,它们被分配给各自的值,这些值是我使用GET方法得到的 例如,我试图编译以下代码: $a='email'; $b=array($a => $_GET['x']); $sql="SELECT * FROM users WHERE $b"; echo $sql; 我需要的输出是: SELECT * FROM users WHERE email='/*value of $_GET['x']*/' 我得到的结果是: SE
$a='email';
$b=array($a => $_GET['x']);
$sql="SELECT * FROM users WHERE $b";
echo $sql;
我需要的输出是:
SELECT * FROM users WHERE email='/*value of $_GET['x']*/'
我得到的结果是:
SELECT * FROM users where Array
有人能帮我怎么做吗。你需要操纵
$b
数组,使它成为你后面的字符串,此时它只是以自己的格式转储内容
这个版本将做你的后
$b=array($a => $_GET['x']);
$columns = [];
foreach ( $b as $name => $value ) {
$columns[] = "$name = '$value'";
}
$sql="SELECT * FROM users WHERE ".implode(" and ", $columns);
echo $sql.PHP_EOL;
我已经使用了和
作为链接多个列的条件,您可以根据自己的需求进行更改
此版本使用绑定参数,在查询中插入占位符而不是值,然后需要将$data
数组绑定到准备好的语句(如何绑定取决于您使用的API)。这是更安全和更灵活的(推荐)
谢谢:)刚刚救了我一天
$b=array($a => $_GET['x']);
$columns = [];
$data = [];
foreach ( $b as $name => $value ) {
$columns[] = "$name = ?";
$data[] = $value;
}
$sql="SELECT * FROM users WHERE ".implode(" and ", $columns);
echo $sql.PHP_EOL;