插入MYSQL字符串PHP时,POST值变为空

时间:2014-01-31 17:59:12

标签: php mysql ajax string post

我将一些带有AJAX POST的值发送到PHP文件: 我知道我得到它们因为我可以看到控制台中发送的值:

table=MENU&colid=MID&id=2&colname=STATUS&value=1

但是出于某种奇怪的原因,我将它们插入到查询字符串中:

"UPDATE ".$_POST['table']." SET ".$_POST['colname']." = ".$_POST['value']." 
WHERE ".$_POST['colid']." = ".$_POST['id'];

当值= 1时,值为空!

UPDATE MENU SET STATUS = '' WHERE MID = '2'

我通过将变量名称值更改为val来解决问题,是否有人经历过类似的事情?值是关键字还是保留字?

有什么想法? 感谢

2 个答案:

答案 0 :(得分:1)

$_POST['$id']不存在。你只有$_POST['id']

在$ _POST上尝试var_dump / print_r以查看所有属性。

作为旁注,看起来你正在使用不推荐使用的mysql扩展(并将post值直接放入数据库查询中,开启了SQL注入的可能性),我强烈推荐MySQLi。

答案 1 :(得分:1)

这个SQL

UPDATE MENU SET STATUS = '' WHERE MID = '2'

实际上并没有反映出你在PHP中所做的事情。这一行:

"UPDATE ".$_POST['table']." SET ".$_POST['colname']." = ".$_POST['value']." 
WHERE ".$_POST['colid']." = ".$_POST['id'];

否则应阅读:

"UPDATE ".$_POST['table']." SET ".$_POST['colname']." = '".$_POST['value']."' 
WHERE ".$_POST['colid']." = '".$_POST['id'] . "'";

请注意您的SQL语句中的单引号,这些引号在PHP代码中缺失。

除此之外,我强烈建议不要通过AJAX从客户端向服务器发送部分SQL,因为您向所有人收听流量或只是窥视浏览器发送的数据时,会向您公开数据库的内部结构。