我有一个页面通过php GET方法从url获取了几个变量。地址是
sampledomain.com/sample.php?id=11&in=16&lang=1
然后我使用$in = $_GET['in'];
和$id =$_GET['id'];
来获取值。
现在,我有一个像这样的MySQL语句:
mysql_query("INSERT INTO tagovi_rel (column1, column2) values ('$in', '$some_variable') ") or die(mysql_error());
即使$in
值正确(我检查过),它也不起作用。真正奇怪的是,当我放$id
(或任何数值)而不是$in
时,它会插入它! $ id和$in
都是数字,出于绝望,我尝试使用$in_num = intval($in)
然后插入$in_num
但没有运气。没有错误。
$some_variable
部分与此问题无关,声明在有或没有的情况下表现相同。
对我来说这是一个真正的难题,为什么声明适用于一个变量但不适用于另一个变量?
答案 0 :(得分:0)
是的,我在页面上['在'],我在这里输入错误。
问题所在 唯一的问题。
很明显,当变量被插值并且根本不干扰SQL时,变量名称特别中没有任何神秘感。你唯一能做的就是打印出每个插值变量并进行比较。
而不是愚蠢的单行程,一个理智的程序员会将他的代码分成几行,以提高可读性/可维护性:
$sql = "INSERT INTO tagovi_rel (column1, column2) values ('$in', '$some_variable')";
mysql_query($sql) or trigger_error(mysql_error()." ".$sql);
因此,您可以注释掉实际的查询执行并输出查询,以进行调试。 因此,如果变量名称有任何差异,您将能够看到自己。
$sql1 = "INSERT INTO tagovi_rel (column1, column2) values ('$in', '$some_variable')";
$sql2 = "INSERT INTO tagovi_rel (column1, column2) values ('$id', '$some_variable')";
var_dump($sql1==$sql2,$sql1,$sql2);
答案 1 :(得分:-3)
首先$ in = $ _GET [in'];必须是$ in = $ _GET ['in'];你忘记了一个引用,并且当你执行'$ in'时,你也会在php中输入结果(STRING)$ in但是当你输入“$ in”时你会得到变量的值。 其次尝试
mysql_query("INSERT INTO tagovi_rel (column1, column2) values (".$in.", ".$some_variable.") ") or die(mysql_error());