我正在使用 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'];
当 value = 1 时,值为空!!!
UPDATE MENU SET STATUS = '' WHERE MID = '2'
我通过将变量名称值更改为 val 解决了这个问题,有人经历过类似的事情吗? value 是关键字还是保留字?
有什么想法吗? 谢谢
最佳答案
这条SQL
UPDATE MENU SET STATUS = '' WHERE MID = '2'
实际上并不反射(reflect)您在 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,因为您正在向每个监听流量或只是窥视浏览器发送的数据的人公开数据库的内部结构。
关于php - 插入MYSQL字符串、PHP时POST值变空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21486890/