0

私は現在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);

私はそれを理解することができません、そしてどんな助けもいただければ幸いです。

4

1 に答える 1

1

あなたの問題は、バックティックでmysql reserver keywords正しく囲まValueれており、データベースがこれがフィールドであることを理解するためではないと思います。整数ではなく整数として扱うことにもっと関心があるので''、小数であるため、値を引用符で囲むことをお勧めします

`Value` = '".$_POST['txtValueBalance']."',
于 2013-05-17T08:34:08.180 に答える