2015-12-10 110 views
0

我有一个查询,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获得任何数据现在,防爆。所有读取数组即使不应该出现也是空的。

+1

'$ didItWorkOrNot = $ stmt-> execute($ insertArray); echo $ didItWorkOrNot;'执行返回一个布尔值。这可能会有所帮助。 – developerwjk

+1

你在使用PDO吗? PDO异常是否处于活动状态?你配置你的PHP服务器,以隐藏错误的用户?检查你的错误日志文件。 – ZeissS

+0

已经尝试过这样的东西,把它放在“if”语句中,但没有任何回应。刚刚尝试了你的话,但没有出现,只是空白 –

回答

0

试着将上面的所有代码

error_reporting(-1); 
ini_set('display_errors', 1); 
+0

检查编辑,尝试但没有完全工作 –

0

正如前面建议这两条线,把在此之前的任何代码来获得PDO抛出异常:

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

然后包裹有问题的代码与try...catch块,所以你可以精确定位到底发生了什么。

+0

检查编辑,尝试但没有完全工作 –