MySQL оператор не будет работать с определенным именем переменной - PullRequest
0 голосов
/ 15 декабря 2011

У меня есть страница, которая получает пару переменных из URL через метод php GET. Адрес будет

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 голосов
/ 15 декабря 2011

Да, у меня есть ['in'] на странице, я здесь набрал опечатку.

в этом проблема.
единственная ваша проблема.

очевидно, что в имени переменной нет ничего загадочного, особенно , когда эта переменная интерполируется и вообще не мешает 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);
0 голосов
/ 15 декабря 2011

прежде всего $ in = $ _GET [in '];должно быть $ in = $ _GET ['in'];вы забыли кавычку, а также в php, когда вы делаете '$ in', результат будет (STRING) $ in, но когда вы введете "$ in", вы получите значение переменной.Во вторых попробуйте

mysql_query("INSERT INTO tagovi_rel (column1, column2) values (".$in.", ".$some_variable.") ") or die(mysql_error());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...