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 注入问题,我正在努力使项目正常运行,我可以稍后进行优化。

编辑 1:我还尝试将“价值”包含在我能想到的所有内容中,这可能会解决这个问题,但没有运气。

编辑2:我也不认为这是语句本身的问题,因为我直接将语句输入到mysql命令行中,它只影响了1行,可能是php问题?

编辑 3:完整块,包括 sql 的执行。在这里,ExecuteSQL 运行所有必要的 mysqli 语句来执行 sql 命令。如果有结果集,它接受一个 sql 语句和一个真/假:

$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 回答