我正在尝试在 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']*/'
我得到的输出是:
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;
我已将其and
用作链接多列的条件,您可以根据自己的要求进行更改。
此版本改为使用绑定参数,插入占位符而不是查询中的值,然后您需要将$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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句