проблема с получением URL с помощью PHP и MySQL - PullRequest
2 голосов
/ 16 февраля 2011

Извините, если кому-то этот вопрос покажется простым, но я не могу понять его.Мне сказали, что я могу приехать сюда, потому что ребята здесь очень полезны.у меня проблема со следующим кодом.когда пользователь вызывает в URL для example page.php?uid=5, я получаю «некоторый код», если я делаю page.php?uid=letters, меня перенаправляют на page.php?uid=1.это отлично работаетно если пользователь должен ввести page.php?uid=1letters, я получаю эту ошибку .. Неизвестный столбец '1gh' в 'выражении where'

Предупреждение: mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, логическое значение задано в C: \ wamp \ www \ page.php в строке 173.

Я получаю эту ошибку, только если пользователь вводит нежелательные символы в конце идентификатора URL-адреса.Как я могу предотвратить это, как я могу перенаправить его на page.php?uid=1 ... см. Код ниже

$id = mysql_real_escape_string(@$_GET['uid']);

$query = mysql_query("SELECT user.* FROM user WHERE id = '$id'");

if ((mysql_num_rows($query)==0)) {
    header("location:page.php?uid=1");
    die();
}
else {
    while($rows = mysql_fetch_array($query)){
        $foo = $row['foo'];

        echo "some code";

1 Ответ

1 голос
/ 16 февраля 2011

mysql_query возвращает false при ошибке. Вы должны проверить, что он возвращает:

$query = "SELECT user.* FROM user WHERE id = '$id'"
$result = mysql_query($query);

if ($result === false) {
    die($query.'<br/>'.mysql_error());
}

Тогда вы можете понять, почему это не удалось. Я добавил запрос в оператор die(), чтобы вы могли попробовать запрос также вручную.

Ошибка: неизвестный столбец строки, что говорит о том, что вы не заключаете значение в одинарные кавычки в запросе SQL, хотя код в вопросе делает это.

В процессе производства вы должны предпринять все возможные меры, чтобы гарантировать правильную обработку ошибок. В этом случае вам, вероятно, понадобится то же поведение, что и при поиске пользователя:

header("location:page.php?uid=1");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...