2012-02-02 20 views
1

MySQLのクエリへの更新/挿入を実行しようとしています。データベースにまだ挿入されていない場合は挿入する必要があります。mysqlクエリへの更新/挿入

ただし、更新されません。私のDB接続は良いです。私はそれを把握することはできません。あなたはあなたも更新クエリを実行していない表示されているコードから

$sql = "UPDATE jos_bl_paid SET u_id='$uid', m_id = '$mid', t_id = '$cus', pd = '1', paypal_payment='$txn',p_date=NOW() WHERE u_id = '$uid' AND '$mid' = m_id ";    

$test45 = mysql_affected_rows(); 
    if ($test45 == 0) { 


$sql = "INSERT INTO jos_bl_paid(paypal_payment,u_id,m_id,pd,t_id,p_date)VALUES('$txn','$uid','$mid','1','$cus',NOW())"; 

    if (!mysql_query($sql)) { 
     error_log(mysql_error()); 
     exit(0); 
         } 

echo 'Yes'; 
}else{ 
echo 'No'; 
} 
+0

エラーとは何ですか? – Fosco

+1

**警告**あなたのコードはSQLインジェクション攻撃の影響を受けやすいかもしれません! –

+0

別々の 'INSERT'と' UPDATE'の代わりに 'INSERT ... ON DUPLICATE KEY UPDATE'を使います。 http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html – dfsq

答えて

2

。あなたも、あなたが

+0

そうだったようですね。まだテストを行っています! – user1079804

+0

また、@DanielのようなSQLインジェクションを防ぐために変数をクリーンアップしてください。 @dfsqが 'INSERT ... ON DUPLICATE KEY UPDATE'を使って1つのステートメントで言ったように、もっとうまくいくかもしれません。 – Henesnarfel

0

私はON DUPLICATE KEY UPDATE mysqlコマンドを使用して1つの文にこれらをするだろう欲しいものを返すように行の前にそのための

$test45 = mysql_affected_rows(); 

if (!mysql_query($sql)) { 
    error_log(mysql_error()); 
    exit(0); 
} 

を配置する必要があります。あなたの問題は、実際のuidがまだ存在していないにもかかわらず、スキーマ内のいくつかのユニークなキーがセットされているために挿入が失敗している可能性があると推測します。あなたはあなたが得たエラーメッセージを正確に投稿できますか?

0

更新クエリであなたの最後の値をチェックし、私はそこにエラーを発見し、私の側 からそれを固定している回答が更新されるとこの

$sql = mysql_query("UPDATE jos_bl_paid SET u_id='$uid',m_id = '$mid', t_id = '$cus', pd = '1', paypal_payment='$txn',p_date=NOW() WHERE u_id = '$uid' AND m_id = '$mid'") or die(mysql_error()); 

を試してみてください、あなたが投稿したコードから更新1

0

を試してみてください$sql文字列をupdateステートメントに設定していて、影響を受ける行の数を確認する前に実行していないようです。

おそらく、そうでなければ、あなたが何を更新するためにデータベースを言っていないmysql_affected_rows();

をチェックする前にmysql_query($sql)を呼び出す必要があります。更新の新しい値は、行は更新されません古いmysqlのと同じである場合

0

あなたがフィールドu_idに主キーを持っている場合は、m_id使用できるmysql_affected_rowsが0になる必要がありますINSERT ON DUPLICATE UPDATEhttp://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

そうでなければカウントクエリを使用することができます:

SELECT count(*) FROM jos_bl_paid WHERE u_id = '$uid' AND '$mid' = m_id 

新しいものを更新する必要があるかどうかを判断するにはどうすればいいですか。

関連する問題