2016-04-03 7 views
3

私は編集フォームを持っています。このような行のデータを取得しています -UPDATEクエリに何か問題があります

if (isset($_GET["id"])) { 
    $pur_id = intval($_GET["id"]); 
} else { 
    echo "id not set"; 
} 

次に、次のUPDATEクエリを実行しようとしています。

$qry1 = mysqli_query($con,"UPDATE `purchase_info` SET `remarks` ='$remarks' WHERE `pur_info_id` = '$pur_id'"); 

このクエリは機能しますが、データベースのレコードは更新されません。しかし、行IDを入れている変数の代わりに単純に数値を渡すとレコードが更新されます。したがって、'pur_info_id' = 1を渡すとレコードが更新されます。

非常に奇妙です。私はint値を使用して値を変換していますが、まだ運がありません。ご意見をお聞かせください。ありがとう!!

+2

あなたは '$ pur_id''の前後の引用符を削除しようとしましたか?' $ pur_id'は 'string'ではなく' int'であり、引用符を追加すると文字列 – SuperDJ

+0

'' $ pur_id''から引用符を取り除いてから、試してみてください。 –

+2

@ SuperDJ:引用符でもうまくいくはずだと思います。 – Reversal

答えて

0

貴重な洞察と知識をお寄せいただきありがとうございます。私は私の問題の解決策を見つけました。それは非常にばかげた問題です、私のために新しいです。 _GETリクエストを使用してテーブルから行IDを取り出し、実際に問題を引き起こした_POSTリクエストでIDを使用しようとしました。

_POSTリクエストの_GETの値は省略できません。だから解決策は、変数に_GETの値を格納し、隠し入力フィールドに保持することです。 _POSTリクエストが行われたときには、単に非表示フィールドから値を取得します。もう一度ありがとう!!

3

実際にUPDATEを実行したときに、pur_info_id列を既に値が使用されていたものに置き換えてしまうため、クエリは非官能的です。

UPDATE `purchase_info` 
SET `pur_info_id` = 1, 
    `remarks` = '$remarks' 
WHERE `pur_info_id` = 1 

まあ、これはpur_info_id列を変更しないだろうが、remarksは何か新しいものに更新される可能性があります:$pur_idは、あなたのクエリのように記述することができ、値1を持っていると仮定します。あなたは、実行するビジネスロジックを教えてください。いずれにしても、次のクエリは元のクエリと論理的に同等です。

UPDATE `purchase_info` 
SET `remarks` = '$remarks' 
WHERE `pur_info_id` = '$pur_id' 
+0

私のビジネスロジックはあなたが説明したのと同じです。私はpur_info_id = 1(仮定して)のいくつかの列を更新する必要があります。ここでpur_info_idカラムを設定する必要はありません。私はそれを削除しようとしましたが、クエリはまだ動作しません。 –

+0

私は知っているが、それは何らかの理由でうまくいかない。 –

+1

実際のクエリ文字列を 'echo'してから、スタンドアロンMySQLで実行します。クエリは実際にそれを実行する方法で動作しますか? –

関連する問題