我正在尝试对列进行参数化以创建非常动态的查询。 我尝试的是:
$db = new PDO("mysql:host=".$this->host.";dbname=myDB",$this->user,$this->pass);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$arr = array("g"=>"My Date","p"=>"Prono Score","a"=>"Age");
$param = "";
foreach($arr as $key=>$value) $param.=(':'.$key.',');
$param = substr($param, 0,count($param)-2);
$query = $db->prepare("SELECT $param FROM myTable LIMIT 1");
foreach($arr as $key=>$value) $query->bindValue($key,$value);
$query->execute();
$res = $query->fetchAll(PDO::FETCH_ASSOC);
return $res;
取得结果:
Array
(
[0] => Array
(
[My Date] => My Date
[Prono Score] => Prono Score
[Age] => Age
)
)
我的错误是什么?我不知道为什么会这样。
答案 0 :(得分:0)
使用此行,您的绑定占位符会将g
,p
,a
称为您的选择字段
$query = $db->prepare("SELECT $param FROM myTable LIMIT 1");
然后使用此行
为其指定文字值foreach($arr as $key=>$value) $query->bindValue($key,$value);
您真正执行了一个名为
的查询"Select 'My Date', 'Prono Score', 'Age' FROM myTable LIMIT 1"