我决定今天将我的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传递一个空数组。