Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用主键引用要更新的行_Php_Mysql_Sql Injection - Fatal编程技术网

Php 使用主键引用要更新的行

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

我有一个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 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,谢谢,但我无法生成它。也许你的编辑器有更多的选择