2015-10-28 42 views
0

根据我发现和看到的一切,这似乎是正确的。当我打印$查询时,结果如下:PDO/PHP - bindValue似乎没有工作

“INSERT INTO customers(FirstName,MiddleInit,LastName,Address,City,State,Zip,Email,Gender)VALUES(?,?,?,? ,?,?,?,?)“

参数应该用bindValues()中的变量填充。因此,例如...

INSERT INTO customers(FirstName,MiddleInit,LastName,Address,City,State,Zip,Email,Gender)VALUES(Bill,A,Hopkins,123 Ave,....)

我想坚持这种方法 - 它被try/catch块包围。从打印查询变量中,我可以看到问题出在哪里。

我错过了什么?我真的很感激你的期待!

$query = 'INSERT INTO customers (FirstName, MiddleInit, LastName, Address, City, State, Zip, Email, Gender) VALUES (?,?,?,?,?,?,?,?,?)'; 
     echo $query; 
     $statement = $db->prepare($query); 
     $statement->bindValue(1, $firstName); 
     $statement->bindValue(2, $middle); 
     $statement->bindValue(3, $lastName); 
     $statement->bindValue(4, $address); 
     $statement->bindValue(5, $city); 
     $statement->bindValue(6, $state); 
     $statement->bindValue(7, $zip); 
     $statement->bindValue(8, $email); 
     $statement->bindValue(9, $gender); 
     $success = ($statement->execute()); 
+0

不知道,没有足够的代码提供了解决方案。无论您是使用PDO作为连接的API,并且您的变量确实是正确的。检查错误。 –

+0

这不是如何准备报表工作。该语句作为一个带有占位符的查询(就像带参数的函数一样),当在数据库上执行时,绑定的参数被注入(就像调用函数一样) – Phil

+1

我投票结束这个问题作为离题,因为它是关于对准备好的陈述的误解 – Phil

回答

0

我们需要更多的代码考虑的错误,但你可以用准备好的语句试试这个:

$query = 'INSERT INTO customers (FirstName, MiddleInit, LastName, Address, City, State, Zip, Email, Gender) VALUES (:firstName, :middle, :lastName, :address, :city, :state, :zip, :email, :gender)'; 
$statement = $db->prepare($sql); 
$statement->execute(array(':firstName'=>$firstName, ':middle'=>$middle, ':lastName'=>$lastName, ':address'=>$address, ':city'=>$city, ':state'=>$state, ':zip'=>$zip, ':email'=>$email, ':gender'=>$gender)); 
+0

OP是使用位置参数或命名参数不相关 – Phil