私は現在phpプロジェクトに取り組んでおり、「値」という単語を列名として使用しています。問題は、クエリを実行すると、区切り記号 (主キー = * )があるにもかかわらず、データベース内のすべてのエントリが上書きされることです。これを機能させるために考えられるすべてのことを試しましたが、まだ機能していません。完全なコード行は次のとおりです。
$SqlStatement = "UPDATE rev_exp SET Date_Entered = '".date('Y-m-d')."', Description = '".$_POST['txtUtilityType']." ".$_POST['txtAccountNumber']." ".$_POST['txtDateAdded']."', `Value` = ".$_POST['txtValueBalance'].", Notes = '".$_POST['txtNotes']."' WHERE PK_Rev_Exp = ".$row['FK_Rev_Exp'];
ここで、$row['FK_Rev_Exp'] は私が話していた区切り文字であることに注意してください。以前のクエリから正確に取得されています。また、SQL インジェクションの問題は無視してください。プロジェクトを機能させる作業を行っているところです。後で最適化できます。
EDIT 1:私はまた、この問題を取り除くことができると思うすべてのものに「値」を含めようとしましたが、運はありません.
EDIT 2:ステートメント自体に問題があるとは思いません.mysqlコマンドラインにステートメントを直接入力し、1行にしか影響しなかったため、おそらくphpの問題でしょうか?
編集 3: SQL の実行を含む完全なブロック。ここで、ExecuteSQL は sql コマンドを実行するために必要なすべての mysqli ステートメントを実行します。結果セットがある場合は、SQL ステートメントと true/false を受け取ります。
$SqlStatement = "UPDATE rev_exp SET Date_Entered = '".date('Y-m-d')."', Description = '".$_POST['txtUtilityType']." ".$_POST['txtAccountNumber']." ".$_POST['txtDateAdded']."', `Value` = '".$_POST['txtValueBalance']."', Notes = '".$_POST['txtNotes']."' WHERE PK_Rev_Exp = ".$row['FK_Rev_Exp'];
ExecuteSQL($SqlStatement, false);
私はそれを理解することができません、そしてどんな助けもいただければ幸いです。