PDO ATTR_EMULATE_PREPARES设置为false,使我失去所有结果

时间:2017-01-25 13:57:51

标签: php mysql pdo

我决定今天将我的mysqli函数替换为PDO。我关注this guide

代码基本就是这个东西,与教程

完全相同
<?php

error_reporting(E_ALL);
ini_set('display_errors', 1);

define('USER', 'my_user');
define('PASS', 'my_pass');


function dataQuery($query, $params) {
    $queryType = explode(' ', $query);

    // establish database connection
    try {
        $dbh = new PDO('mysql:host=localhost;dbname=my_db_name', USER, PASS);
        $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
        $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e) {
        $errorMsg = $e->getMessage();
        echo $errorMsg;
    }

    // run query
    try {
        $queryResults = $dbh->prepare($query);
        $queryResults->execute($params);
        if($queryResults != null && 'SELECT' == $queryType[0]) {
            $results = $queryResults->fetchAll(PDO::FETCH_ASSOC);
            return $results;
        }
        $queryResults = null; // first of the two steps to properly close
        $dbh = null; // second step to close the connection
    }
    catch(PDOException $e) {
        $errorMsg = $e->getMessage();
        echo $errorMsg;
    }
}

$test = dataQuery('SELECT * FROM `test_table`', array(''));
echo "<pre>";
print_r($test);

如果我注释掉“$ dbh-&gt; setAttribute(PDO :: ATTR_EMULATE_PREPARES,false);”,我会毫无问题地得到所有结果。使用它我得到一个空数组。

我已经尝试寻找解决方案,但所有“类似”错误似乎都有其他潜在问题,主要与参数有关。我甚至没有使用那些,只是试图为params传递一个空数组。

0 个答案:

没有答案