使MySQL查询与从$ _GET派生的变量一起运行

时间:2011-10-22 09:34:31

标签: php mysql get

我被困在这几个小时!请原谅我的天真,因为我是编程的新手。

我的页面根据一些变量运行了许多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中接收其他变量(看似没有任何问题)。

如果我遗漏了任何内容,请告诉我,我可以根据需要提供更多信息/代码。

4 个答案:

答案 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");

我希望如果不做回复会有所帮助。