2013-04-10 114 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