【发布时间】:2013-03-07 16:25:31
【问题描述】:
由于某种原因,杀死查询 var 时的两个代码都返回:
SELECT client_fname FROM client WHERE c=:l AND f=:n
代替:
SELECT client_fname FROM client WHERE client_id=:id AND client_id=:fname
注意只输出列名字符串的第一个字符。
我哪里出错了? :S
PHP 5.4,将使用 PDO SQL。
public function getField($_field, $_id, $_type) {
$_args = array(
array($_type.'_id', 'id'),
array($_type.'_fname', 'fname')
);
//var_dump($_args);
echo $this->dbSelect($_type.'_'.$_field, $_type, $_args);
}
protected function dbSelect($_select, $_from, $_args) {
$i = 0; //var_dump($_args);
$query = 'SELECT '.$_select.' FROM '.$_from.' WHERE ';
foreach ($_args as $_where) {
if($i == 0) {
$query .= $_where[$i][0] .'=:'. $_where[$i][1];
} else {
$query .= ' AND '.$_where[$i][0] .'=:'. $_where[$i][1];
}
$i++;
}
die($query);
}
【问题讨论】:
-
你没有正确格式化你的标识符,所以,存在注入/错误的可能性