2013-04-10 110 views
2

我將我的項目切換到PDO,並遇到以下代碼的問題。它不會拋出錯誤,但也不會插入到數據庫中。我一直在讀PDO,我已經看過DebugdumpParams()。我加了$result->debugDumpParams(),頁面沒有加載。PHP PDO查詢問題

我需要在prepare()之後使用BindParam(),才能在​​之前進行調試嗎?

public function CustomerInsert($name, $street1, $street2, $city, $state, $zip, $phone_area, $phone, $email, $notes, $leadtype, $rating, $newsletter, $frequency) 
    { 
$q = "INSERT INTO customers VALUES('', :name , :street1 , :street2 , :city , :state , :zip , :phone_area , :phone , :email , :notes , :newsletter , :leadtype , :frequency)"; 

try{ 
$result = $this->connection->prepare($q); 

$result->execute(array(':name'=>$name, ':street1'=>$street1, ':street2'=>$street2, 
           ':city'=>$city, ':state'=>$state, ':zip'=>$zip, ':phone_area'=>$phone_area, 
           ':phone'=>$phone, ':email'=>$email, ':notes'=>$notes, ':newsletter'=>$newsletter, 
           ':leadtype'=>$leadtype, ':frequency'=>$frequency)); 
} 
catch (PDOException $e) 
{ 
    throw new Exception('Connection failed: ' . $e->getMessage()); 
} 
+0

打開錯誤報告上 – 2013-04-10 15:09:51

+0

怎麼辦我這樣做?在PHP中報告錯誤?是否有可能在每個文件的基礎上做到這一點? – XanderNGCC 2013-04-10 15:10:58

+0

也看看'$ result-> ErrorInfo()'和'$ this-> connection-> ErrorInfo()' – andrewsi 2013-04-10 15:11:35

回答

1

您的查詢看起來沒有格式錯誤,所以我的猜測是值的數量與表中的字段數不匹配。您可以通過查詢指定的字段解決這個問題:

$q = "INSERT INTO `customers` 
     (`name`,`street1`,`street2`,`city`,`state`,`zip`,`phone_area`,`phone`,`email`,`notes`,`newsletter`,`leadtype`,`frequency`) 
     VALUES(:name , :street1 , :street2 , :city , :state , :zip , :phone_area , :phone , :email , :notes , :newsletter , :leadtype , :frequency)"; 

但你可以看到錯誤從MySQL如果你turn error reporting on within PDO,如:

$this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
+0

好吧,讓我試試看。 – XanderNGCC 2013-04-10 15:37:56

+0

Ahhh,甜心,現在正在用列拋出一個錯誤。我想我現在可以弄明白了。將在一分鐘內更新。 – XanderNGCC 2013-04-10 15:42:35