2015-10-28 55 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