Php 使用主键引用要更新的行
我有一个MySQL数据库,我正在尝试使用它执行更新或删除命令:Php 使用主键引用要更新的行,php,mysql,sql-injection,Php,Mysql,Sql Injection,我有一个MySQL数据库,我正在尝试使用它执行更新或删除命令: $query=“updatedb SET this='$\u POST[f\u that]',this2='$\u POST[f\u that2]'其中index='$\u POST[f\u index]'” 每次都会返回一个语法错误,表示问题在index='#'附近。信息来自一个表,该表的输入字段与数据库中设置的值内联(内联编辑)。表单索引以这种方式输出。在我的数据库中,索引是主键并自动递增 我已经打印了print_r()$\u
$query=“updatedb SET this='$\u POST[f\u that]',this2='$\u POST[f\u that2]'其中index='$\u POST[f\u index]'”代码>
每次都会返回一个语法错误,表示问题在index='#'
附近。信息来自一个表,该表的输入字段与数据库中设置的值内联(内联编辑)。表单索引
以这种方式输出。在我的数据库中,索引是主键并自动递增
我已经打印了print_r()
$\u POST
和$query
,以确保表单索引
是一个正确的数字
是否有一些规则我不能仅在主键上引用?index
是mysql中的保留字,您不能直接将其用作列名,您必须在列名周围使用`
来使用这些保留字
$query = "UPDATE db SET `this`='$_POST[f_that]',`this2`='$_POST[f_that2]'
WHERE `index`='$_POST[f_index]'";
索引
是保留字,您应该更改它或像下面一样使用背杆
`index`
更改索引的列名
。它在您的查询中被视为一个关键字。请从数据库中显示show CREATE db
,或descripe db
。是f_index
是form_index
还是f_index
正如您在问题中所说的那样?永远不要使用直接的$\u POST值进行数据库查询!!!Woah甚至没有注意到索引,下面做得很好。同样,一旦它工作,请确保正确地转义查询。@Christopher如果你的帖子只发送1'它将破坏你的代码。。不管它是否值得信任,你都必须对你的问题进行彻底的清理。工作起来很有魅力!非常感谢你!!我会尽快把它标记为答案。@Yogesh,你如何在索引中显示backstick。我看不出来it@Yogesh,谢谢,但我无法生成它。也许你的编辑器有更多的选择