2011-06-25 22 views
0

這實際上是我使用PDO的第一個項目。爲什麼最後我的參數名稱而不是它們的值在這個PDO插入語句中?

效果很不錯,到目前爲止,但在這個特殊的情況下,我最終在我的數據庫中的以下內容:

enter image description here

未修改的代碼,我用的是這個:

<?php 
$dbh=new PDO('mysql:host=localhost;dbname=domain-me;port=3306','domain-me','****',array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8")); 
$sql=" 
INSERT INTO payments_paypal (
tid , 
txn_id , 
item_number , 
item_name , 
mc_currency , 
mc_gross , 
payment_date , 
payment_status , 
custom , 
payer_email , 
raw_data 
) 
VALUES (
NULL , ':txn_id', ':item_number', ':item_name', ':mc_currency', ':mc_gross', ':payment_date', ':payment_status', ':custom', ':payer_email', ':raw_data' 
); 
"; 
$sth=$dbh->prepare($sql); 
$do=$sth->execute(array(':txn_id'=>@$_POST["txn_id"],':item_number'=>$_POST["item_number"],':item_name'=>$_POST["item_name"],':mc_currency'=>$_POST["mc_currency"],':mc_gross'=>$_POST["mc_gross"],':payment_date'=>$_POST["payment_date"],':payment_status'=>$_POST["payment_status"],':custom'=>$_POST["custom"],':payer_email'=>$_POST["payer_email"],':raw_data'=>$_POST["raw_data"],)); 
?> 

編輯:

我現在做了它使用舊的mysql_function,它現在的作品。不過,我有這個查詢工作得很好:

$sql = "INSERT INTO users (puid,refcode,extuid, login,login_proxy, pass, email) 
VALUES (:puid,:refcode,:extuid,:login,:login_proxy,:pass,:email);"; 
     $sth = $dbh->prepare($sql); 

     $do = $sth->execute(
       array(
       ':puid' => $refuser, 
       ':refcode' => crc32(uniqid('')), 
       ':extuid' => md5(uniqid('')), 
       ':login' => $_POST['login'], 
       ':login_proxy' => $_POST['login'], 
       ':pass' => sha1($_POST['pass']), 
       ':email' => $_POST['email'] , 
       ) 
     ); 
+0

你有沒有在你的插入語句中使用單引號? – Dirk

+0

是的,那麼它根本不起作用。目前正在調試。 –

+0

不要使用錯誤抑制運算符(@)如果你想看到錯誤嘿嘿 – rkulla

回答

1

我相信當做一個INSERT或UPDATE時,你需要指定插入值數組中沒有冒號的名稱。試試這個:

<?php 
$dbh=new PDO('mysql:host=localhost;dbname=domain-me;port=3306','domain-me','****',array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET NAMES utf8")); 
$sql=" 
INSERT INTO payments_paypal (
tid , 
txn_id , 
item_number , 
item_name , 
mc_currency , 
mc_gross , 
payment_date , 
payment_status , 
custom , 
payer_email , 
raw_data 
) 
VALUES (
NULL , ':txn_id', ':item_number', ':item_name', ':mc_currency', ':mc_gross', ':payment_date', ':payment_status', ':custom', ':payer_email', ':raw_data' 
); 
"; 
$sth=$dbh->prepare($sql); 
$do=$sth->execute(array('txn_id'=>@$_POST["txn_id"],'item_number'=>$_POST["item_number"],'item_name'=>$_POST["item_name"],'mc_currency'=>$_POST["mc_currency"],'mc_gross'=>$_POST["mc_gross"],'payment_date'=>$_POST["payment_date"],'payment_status'=>$_POST["payment_status"],'custom'=>$_POST["custom"],'payer_email'=>$_POST["payer_email"],'raw_data'=>$_POST["raw_data"],)); 
?> 
+0

聽起來很合理,但我無法證實這一點。我用冒號進行了另一個查詢,它工作得很好,我把它作爲註釋添加到答案中。 –

相關問題