我被困在这几个小时!请原谅我的天真,因为我是编程的新手。
我的页面根据一些变量运行了许多MySQL UPDATE查询。其中一个变量是从当前页面的URL(非静态)派生的,所以我必须使用$ _GET来获取它:
$subjvar = $_GET['subj'];
echo $subjvar;
这很好用 - 例如,网址是blahblah.php?subj = 07EN和上面的回应07EN毫无问题。
但是,当MySQL查询尝试运行时:
$insertjavavar = "UPDATE timedb SET $subjvar = '$javavartodb' WHERE week = '$javavaralsotodb' ";
$insertjavavarquery = mysql_query($insertjavavar) or die ("JQuery sucks");
它不会更新数据库。它没有给我消息,它只是无声地失败。
查询似乎不是问题 - 如果我手动定义$ subjvar:
$subjvar = '07EN';
运行正常,用所有相关数据更新名为07EN的字段。
因此,当使用$ _GET定义变量时,为什么它不会这样做我完全不知道。
我应该提一下,有问题的MySQL查询是基于JQuery函数运行的,并且从AJAX POST中接收其他变量(看似没有任何问题)。
如果我遗漏了任何内容,请告诉我,我可以根据需要提供更多信息/代码。
答案 0 :(得分:0)
这根本没有意义。 $ subjvar是否包含timedb表中列的名称?因为这就是你似乎在做的事情。但是如果它的值是07EN它将会爆炸,你会得到你的消息。
答案 1 :(得分:0)
如果将查询回显到stdout以查看正在执行的SQL。我怀疑这是一个语法错误tbh - 只需稍微调整一下。
答案 2 :(得分:0)
我认为这只是错过了引号 尝试将您的代码更改为:
$insertjavavar = "UPDATE timedb SET ". $subjvar . " = \"" . $javavartodb . "\" WHERE week = \"" .$javavaralsotodb. "\"";
或:
$insertjavavar = "UPDATE timedb SET $subjvar = \"$javavartodb\" WHERE week = \"$javavaralsotodb\"";
另见:http://id2.php.net/manual/en/language.variables.basics.php
以便能够查看错误报告 改变你的php.ini方向 寻找 error_reporting 并将值设置为 E_ALL& 〜E_DEPRECATED 强>
希望它有用
答案 3 :(得分:0)
尝试将您获得的值转换为字符串:
$subjvar = $_GET['subj'];
$subjvar = (string)$subjvar;
$insertjavavar = "UPDATE timedb SET $subjvar = '$javavartodb' WHERE week = '$javavaralsotodb' ";
$insertjavavarquery = mysql_query($insertjavavar) or die ("JQuery sucks");
我希望如果不做回复会有所帮助。