Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.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/67.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_Pdo_Prepared Statement - Fatal编程技术网

Php 真正准备好的时候默默地失败,被模仿的时候工作

Php 真正准备好的时候默默地失败,被模仿的时候工作,php,mysql,pdo,prepared-statement,Php,Mysql,Pdo,Prepared Statement,为了安全起见,我将ATTR\u EMULATE\u PREPARES选项设置为false。 在开发环境中,ATTR\u ERRMODE处于ERRMODE\u异常状态 但是这个代码: // $this->bdd is juste a regular PDO instance with some options $req = $this->bdd->prepare('INSERT INTO users VALUES(NULL, :login, :passwd, :email, :f

为了安全起见,我将ATTR\u EMULATE\u PREPARES选项设置为false。 在开发环境中,ATTR\u ERRMODE处于ERRMODE\u异常状态

但是这个代码:

// $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总是真正准备好语句

在代码之间进行尝试捕捉,这样如果我们遇到错误,我们可以看到错误数组而不是空白

 try {
    $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);
$execute = $req->execute();
 } catch (PDOException $error) {
print_r($error);
die();


}

“显示错误”为1,“错误报告”为32767(E_ALL),因此在出现故障时应该会显示一些内容,但它没有显示。只是想确定一下,我照你说的做了,什么也没发生……这个问题你成功了吗?@PetitkoalakNo,我一直在问我认识的每个人,我没有得到有效的答案。。。我必须强制预先准备好的语句模拟,即使这是一个潜在的安全漏洞