对于每个PHP多维数组,返回1个字符
出于某种原因,在终止查询var时,这两个代码都返回:对于每个PHP多维数组,返回1个字符,php,mysql,arrays,pdo,Php,Mysql,Arrays,Pdo,出于某种原因,在终止查询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 请注意,只输出列名字符串的第一个字符 我哪里出错了 PHP5.4,将使用PDOSQL public function getField($_field, $_id, $_type)
SELECT client_fname FROM client WHERE c=:l AND f=:n
而不是:
SELECT client_fname FROM client WHERE client_id=:id AND client_id=:fname
请注意,只输出列名字符串的第一个字符
我哪里出错了
PHP5.4,将使用PDOSQL
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);
}
$\u args
是一个二维数组。但是,您的foreach
正在使用$\u其中
作为其迭代变量$\u其中
本身就是一个一维数组,所以这里根本不需要$i
。只需在[0]
$\u其中[0]
应指列,$\u其中[1]
指其绑定占位符$i
与$\u的内容无关,其中
foreach ($_args as $_where) {
if($i == 0) {
$query .= $_where[0] .'=:'. $_where[1];
} else {
$query .= ' AND '.$_where[0] .'=:'. $_where[1];
}
$i++;
}
否则,您将获得字符串的数组键访问结果。例如:
$str = "Hello world";
echo $str[0];
// "H"
您没有正确格式化标识符,因此可能存在注入/错误