2012-04-18 17 views
0

IDの値(自動インクリメントされた列(主キー))によってデータベースからデータを取得し、<input>タグのすべてのフィールドを値のプロパティで表示できるフォームがあります。私がフォームを提出するときに、ID列のIDがまだ存在しない場合は新しい行をINSERTし、同じIDを持つ行の残りのデータを更新する場合は、その行をINSERTする必要があります。SQL REPLACE INTO not working

私はこれを研究しようとしていますが、誰も私がやろうとしているのと同じことをしているようには見えません。

$sqlString = 'REPLACE INTO coursework 
SET cwID=`'. $cwID .'`, 
cwTitle=`'. $cwTitle .'`, 
cwContent=`'. $cwContent .'`, 
cwProgress=`'. $cwProgress .'`, 
cwDue=`'. $cwDue .'`; 

すべての$ cw []変数は$ _POSTメソッドから受け取った内容です。

私はエラーコード得続ける: 'フィールドリスト'に1054-不明な列を '6' - "不明な列 '6'" MySQLは$ _POST [ 'CWIDの$ CWID(値を呼び出そうとしています']))の代わりにcwID列(私のテーブルの主キー)です。私は何か単純で愚かなものがあるように感じます。私は行方不明ですが、私は以前このREPLACE INTOメソッドを使用したことはありません。

INSERT IGNORE INTOINSERT ... ON DUPLICATE KEY UPDATEの投稿を見ましたが、どちらも私が探しているものよりも破壊的です。

cwIDが存在し、自動インクリメントがtactに保持されているか、IDがない場合は新しい行が追加された場合にテーブルが更新されていることを確認したいだけです。 SELECTクエリを実行して、それが存在し、INSERT/UPDATEが適切かどうかを確認するだけですか?

答えて

1

を参照してください。

+0

それがあります!それは何か愚かなことを知っていた...ありがとう! – jbingman

3

削除 文字列を囲むバックティック( `)を一重引用符( ')で置き換えます。

MySqlは、値として使用している文字列で指定された列を検索しようとしています。

また
$sqlString = 
"REPLACE INTO coursework SET cwID='$cwID', cwTitle='$cwTitle', cwContent='$cwContent', cwProgress='$cwProgress', cwDue='$cwDue'"; 

"はあなたの変数を補間することに注意してください:

は、単一引用符とバッククォートを交換しhttp://dev.mysql.com/doc/refman/5.5/en/identifiers.html

+0

私はそれを試みましたが、それはさらにクエリを駄目にします。 'エラーコード:1064 - SQL構文にエラーがあります。あなたのMySQLサーバのバージョンに対応したマニュアルを参照して、適切な構文がAndroid 02の近くで使用できることを確認してください。cwContent = 第3行目の "Androidの学習"の第5章から第6章を読む/学ぶ – jbingman

+0

@jbingman投稿データをエスケープしてみてくださいmysql_real_escape_stringを経由してください。それがSQL文のログに役立ち、それを投稿するのに役立たない場合は、 –