Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对于每个PHP多维数组,返回1个字符_Php_Mysql_Arrays_Pdo - Fatal编程技术网

对于每个PHP多维数组,返回1个字符

对于每个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)

出于某种原因,在终止查询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) {
    $_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"

您没有正确格式化标识符,因此可能存在注入/错误