0

我正在尝试参数化列以创建一个非常动态的查询。我尝试的是:

$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
        )

)

我的错误是什么?我不知道为什么会这样。

4

1 回答 1

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"
于 2013-07-19T02:17:16.200 回答