【发布时间】:2015-07-04 20:47:56
【问题描述】:
出于安全考虑,我将 ATTR_EMULATE_PREPARES 选项设置为 false。 而在开发环境中,ATTR_ERRMODE 为 ERRMODE_EXCEPTION。
但是这段代码:
// $this->bdd is juste a regular PDO instance with some options
$req = $this->bdd->prepare('INSERT INTO users VALUES(NULL, :login, :passwd, :email, :firstname, :lastname, :role, :token_id, :confirmed, :registration_date, :last_connexion_date)');
$req->bindValue(':login', $login, PDO::PARAM_STR);
$req->bindValue(':passwd', $passwd, PDO::PARAM_STR);
$req->bindValue(':email', $email, PDO::PARAM_STR);
$req->bindValue(':firstname', $firstname, PDO::PARAM_STR);
$req->bindValue(':lastname', $lastname, PDO::PARAM_STR);
$req->bindValue(':role', $role, PDO::PARAM_INT);
$req->bindValue(':token_id', $token_id, PDO::PARAM_INT);
$req->bindValue(':confirmed', $confirmed, PDO::PARAM_BOOL);
$req->bindValue(':registration_date', $registration_date, PDO::PARAM_STR);
$req->bindValue(':last_connexion_date', $last_connexion_date, PDO::PARAM_STR);
return $req->execute() ? true : $req->errorInfo();
只是静默失败,错误代码为 00000。 在浏览stackoverflow和其他平台时,我发现了一些与“真正准备好的语句”相关的类似错误,可以解决(对我不起作用)。我决定打开仿真,它运行良好。
我的问题:我想保留真正准备好的陈述,我不知道有什么问题......
编辑: 我只是出于测试目的从 PDO 更改为 MySQLi,MySQLi 工作,PDO 不要(并且仍然失败)这里的脚本:
MySQLi 总是做真正准备好的语句
【问题讨论】:
标签: php mysql pdo prepared-statement