使用php

时间:2018-07-07 05:44:03

标签: php mysql sql arrays get

我正在尝试在sql查询中传递数组。

数组包含列名作为索引,它们被分配给我使用GET方法获得的相应值。

例如,iam尝试编译此代码:

$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

有人可以帮我如何使它工作。

1 个答案:

答案 0 :(得分:0)

您需要操纵$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;