MySQL: ошибка, когда запрос не возвращает результатов? - PullRequest
0 голосов
/ 26 августа 2011

У меня есть запрос, который выглядит так:

SELECT number
            FROM table1
            INNER JOIN table2
            WHERE name = 'stack_overflow' AND table1.id = table2.id
            AND user_id = 5

Это возвращает число.Это делает правильно, но когда внутри имени я передаю имя, которое не существует в БД, PHP выдает мне ошибку.Вот как я его выполняю:

    $stmt = $this->db->prepare($sql);
    $stmt->execute();

    $x = $stmt->fetchColumn();

Я всегда получаю правильное значение $ x, когда имя существует в таблице, однако, когда его нет, я получаю следующую ошибку:

Неустранимая ошибка: необработанное исключение «PDOException» с сообщением «SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL имеется ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с 'name_that_is_not_in_table'

Не знаю ....

Ответы [ 2 ]

1 голос
/ 26 августа 2011

Попробуйте передать имя таким образом:

SELECT number
            FROM table1
            INNER JOIN table2
            WHERE name = ? AND table1.id = table2.id
            AND user_id = 5

$stmt = $this->db->prepare($sql);
$stmt->execute(array($name));
$x = $stmt->fetchColumn();
0 голосов
/ 26 августа 2011

Похоже, вам нужно проверить, сколько строк возвращается первым ... если их нет, уведомить пользователя. Если он имеет возвращенное количество строк, то получите столбец имени, как вы ожидаете.

Кроме того, вы должны уточнить alias.column в ваших запросах, поскольку любому новичку не нужно угадывать, из какой таблицы происходит данный столбец ... Например, ваш user_id и имя столбца. (и «имя» может быть зарезервированным словом и вызывать удушение ... так что вы можете заключить его в отметки

`name`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...