我有一个查询,INSERT
是用户使用预备的Mysql语句进入数据库。没有错误抛出,但由于某种原因,语句执行后的任何代码都不会运行。它将运行之前的任何代码。一切都很好,我不知道可能是什么原因造成的。代码如下: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';
我的意思是如果没有代码执行的是什么GET的打印出来,或者那是下面这段代码是没有听得到任何执行的功能。但是当$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获得任何数据现在,防爆。所有读取数组即使不应该出现也是空的。
'$ didItWorkOrNot = $ stmt-> execute($ insertArray); echo $ didItWorkOrNot;'执行返回一个布尔值。这可能会有所帮助。 – developerwjk
你在使用PDO吗? PDO异常是否处于活动状态?你配置你的PHP服务器,以隐藏错误的用户?检查你的错误日志文件。 – ZeissS
已经尝试过这样的东西,把它放在“if”语句中,但没有任何回应。刚刚尝试了你的话,但没有出现,只是空白 –