Mysql查询后没有代码执行

时间:2015-12-10 22:41:37

标签: php mysql

我有一个查询INSERT用户使用准备好的Mysql语句进入数据库。没有抛出错误,但由于某种原因,执行语句后的任何代码都没有运行。它之前的任何代码都将运行。一切看起来都很好,我不知道是什么导致了这一点。代码如下:

$SQL = "INSERT INTO `testDb`
            (`email`, `id`, `created_at`, `password`, `access_token`)
        VALUES
            (:email, :id, :currentDate, :password, :token)";

$stmt = $DBH->prepare($SQL);

$insertArray = array(
    ":email"        =>  "some Email",
    ":currentDate" => date('Y-m-d H:i:s'),
    ":id"   =>  "some id",
    ":password" =>  "some pass",
    ":token"        =>  $access_token
);
$stmt->execute($insertArray);
// All of this following code doesn't execute,
// including all the other following code after all this code
$responseData = array(
    "user_id"       =>  $DBH->lastInsertId(),
    "access_token"  =>  $access_token,
    "new_user"      =>  1
);
print_r($responseData);
echo 'TESTTTTTT';

当没有执行任何代码时,我的意思是没有任何内容被打印出来,或者在此代码下面的任何非侦听功能也都被执行。但是当$stmt->execute($insertArray);被注释掉时,下面的所有其他内容都会被执行。

编辑: 错误属性在文件的开头设置,所有内容都已包装在try / catch中。这是设定的内容:

error_reporting(E_ALL);
ini_set('display_errors', '0');
ini_set('log_errors','1');
$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$DBH->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

尝试了所有建议,但没有任何效果,没有错误被抛出。唯一有用的是评论这两行:

$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$DBH->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);

之后被注释掉,其余代码执行,但似乎现在无法从db获取任何数据,例如。所有获取数组都是空的,即使它们不应该是空的。

2 个答案:

答案 0 :(得分:0)

尝试将这两行放在所有代码

之上
error_reporting(-1);
ini_set('display_errors', 1);

答案 1 :(得分:0)

如前所述,在任何代码之前放置此代码以使PDO抛出异常:

$DBH->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

然后使用try...catch块包装有问题的代码,以便您可以确定究竟发生了什么。