我将一些带有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来解决问题,是否有人经历过类似的事情?值是关键字还是保留字?
有什么想法? 感谢
答案 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,因为您向所有人收听流量或只是窥视浏览器发送的数据时,会向您公开数据库的内部结构。