Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 准备好的陈述很奇怪_Php_Mysql_Prepared Statement - Fatal编程技术网

Php 准备好的陈述很奇怪

Php 准备好的陈述很奇怪,php,mysql,prepared-statement,Php,Mysql,Prepared Statement,我的代码: public function select($tbl,$info,$cond = null) { if (!is_array($info)) { return false; } $query = "SELECT `" . implode("`,`", $info) . "` FROM " . $this->escapeString($tbl) . (is_null($cond) ? "" : " WHER

我的代码:

public function select($tbl,$info,$cond = null) {
        if (!is_array($info)) {
            return false;
        }
        $query = "SELECT `" . implode("`,`", $info) . "` FROM " . $this->escapeString($tbl) . (is_null($cond) ? "" : " WHERE " . $this->generateConditions($cond));
        $query = $this->escapeString($query);
        if ($prep = mysqli_prepare($this->connection,$query)) {
            $types = "";
            if (!is_null($cond)) {
                $types = $this->generateTypes($cond,$types);
            }
            $params = array();
            array_push($params, $prep);
            array_push($params, $types);
            if (!is_null($cond)) {
                foreach ($cond as $key => $value) {
                    array_push($params, $value);
                }
            }
            if (call_user_func_array("mysqli_stmt_bind_param", $this->refValues($params))) {
                mysqli_stmt_execute($prep);
                $results = array();
                $results[] = $prep;
                $row = new stdClass();
                foreach ($info as $key => $value) {
                    $results[] = &$row->$value;
                }
                if (call_user_func_array("mysqli_stmt_bind_result", $results)) {
                    $resultArray = array();
                    while (mysqli_stmt_fetch($prep)) {
                        error_log("[PROJECT] ROW: " . print_r($row,true));
                        array_push($resultArray, $row);
                    }
                    error_log("[PROJECT] TEST: " . print_r($resultArray,true));
                    mysqli_stmt_close($prep);
                    unset($prep);
                    return (count($resultArray) == 1) ? $resultArray[0] : (array)$resultArray;
                }
                mysqli_stmt_close($prep);
                unset($prep);
                return false;
            }
        }
        return false;
    }
这是我从数据库中选择内容的php方法。但是,似乎存在一个bug:

$resultArray = array();
while (mysqli_stmt_fetch($prep)) {
   error_log("[PROJECT] ROW: " . print_r($row,true));
   array_push($resultArray, $row);
}
error_log("[PROJECT] Array: " . print_r($resultArray,true));
你会认为无论这些
$row
是在数组中找到的,对吗? 这是输出(由于日志太长,我提出了一个概念):


因此,虽然行不同,但数组中只显示一行,并且该行是重复的。有人对此有解释吗?

根本不是一个奇怪的错误
$results[]=\uuuu&\uuuu$row->$value指定“按引用”是只有在了解其工作原理时才应该执行的操作。我有1个对象,$row,并且在获取请求期间设置了其属性,然后我将其添加到数组中,其属性将更改。问题是,数组中的属性也在更改。我需要复制或克隆对象,使其属性不可触及。
ROW: stdClass Object\n(\n    [token] => RUMtN0tWNDU3MDY3QjE0NDM4M1M=\n...
ROW: stdClass Object\n(\n    [token] => RUMtNU1DNjcwNjYxNTQyNjIxNTc=\n...
Array: stdClass Object\n(\n    [token] => RUMtN0tWNDU3MDY3QjE0NDM4M1M=\n,
stdClass Object\n(\n    [token] => RUMtN0tWNDU3MDY3QjE0NDM4M1M=\n