MySQL语句不适用于某个变量名称

时间:2011-12-15 13:41:14

标签: php mysql insert

我有一个页面通过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部分与此问题无关,声明在有或没有的情况下表现相同。

对我来说这是一个真正的难题,为什么声明适用于一个变量但不适用于另一个变量?

2 个答案:

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