2011-06-25 2 views
0

これは実際に私がPDOを使う最初のプロジェクトです。このPDO挿入ステートメントの値ではなく、自分のparam名で終わるのはなぜですか?

それはこれまでのところ非常にうまく働いたが、私は私のデータベースに以下の内容で終わり、この特定のケースでは:

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

あなたはinsert文で一重引用符を使わずに試してみましたか? – 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

音は聞こえるが、確認できない。コロンを使った別のクエリがあり、うまく動作する。私はコメントとして答えに加えた。 –

関連する問題