所以,我今天从 mysql_* 切换到 PDO 并试图让它运行,但不知何故我得到了零结果。
我的声明如下:
$serverConnector = new ServerConnector();
$db = $serverConnector->connectToServer();
$stmt = $db->prepare("SELECT * FROM `" . TABLE_USERS . "` WHERE `" . USER_NICKNAME . "` =:user_nickname OR `" . USER_EMAIL . "` =:user_email;");
$stmt->execute(array(':user_nickname' => "'".$name_or_email."'", ':user_email' => "'".$name_or_email."'"));
while ($row = $stmt->fetchAll(PDO::FETCH_ASSOC)) {
$this->id = $row[USER_ID];
$this->joined = $row[USER_JOINED];
...
}
$db = null;
我尝试在 Xampp 上将此语句作为纯 SQL 执行。在那里工作。虽然在这里不起作用。我已经检查了所有传递的参数,一切都是正确的。不知何故,程序根本不会进入while循环。ServerConnector 只是通过 PDO 连接到数据库并将 PDO 数据库对象返回给 $db。
谢谢
编辑:嗯,我正在使用最新的 Xampp 和 PHP 5.4.7。PDO 应默认启用。自己检查了 php.ini 文件,它也在那里启用
编辑:这是我的 ServerConnector 类。启用错误报告。虽然我不会得到任何:/
class ServerConnector {
public function connectToServer(){
$db = new PDO('mysql:host=' . DATABASE_HOST . ';dbname=' . DATABASE_NAME . ';charset=UTF-8',
DATABASE_USERNAME,
DATABASE_PASSWORD,
array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
return $db;
}
}