Что не так с этим MySQL Query? - PullRequest
       20

Что не так с этим MySQL Query?

11 голосов
/ 07 октября 2010

Сейчас 12:30, и я кодирую уже 9 часов подряд. Мне действительно нужно завершить этот проект, но MySQL портит мой крайний срок. Не могли бы вы проверить этот фрагмент для меня и посмотреть, сможете ли вы выяснить, что не так?

PHP / MySQL Query

$q = $this->db->query("SELECT * FROM bans WHERE ip='".$ip."'");

Продолжает возвращать следующую ошибку ...

Ошибка MYSQL [6 октября 2010 г., 23:31 CDT]
У вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с '* FROM bans WHERE ip =' 206.53.90.231 '' в строке 1 (1064)

Я не вижу ничего плохого в запросе. Я даже пробовал разные способы включения переменной $ ip , но безрезультатно.

EDIT:
Просто добавьте сюда, столбец ip в моей базе данных - это varchar (255).

РЕДАКТИРОВАТЬ 2:
Вот весь затронутый код. Имейте в виду, что это все в классе. Если я что-то упустил, дайте мне знать.

Строка из другой функции

if($this->isBanned($_SERVER['REMOTE_ADDR'])===true) { return json_encode(array('error'=>'You are banned from this ShoutBox.')); }

Затрагиваемая функция

function isBanned($ip) {
    $q = $this->db->query("SELECT * FROM bans WHERE ip='".$ip."'"); $num = $this->db->affected_rows;
    if($num>0) { $row = $this->db->fetch_array($q); if(($row['expires'] < time()) && ($row['expires'] !== 0)) { $this->unbanUser($ip,'internal'); return false; } return true; } return false;
}

функция unbanUser

function unbanUser($ip,$t='box') {
    $q = $this->db->query("SELECT * FROM bans WHERE ip='".$ip."'"); $num = $this->db->affected_rows; if($num>0) { $q = $this->db->query("DELETE * FROM bans WHERE ip='".$ip."'"); 
    return (($t=='box') ? json_encode(array('status'=>'removed')) : true); } else { return (($t=='box') ? json_encode(array('error'=>'Unable to locate the user.')) : true); }
}

Ответы [ 3 ]

7 голосов
/ 07 октября 2010

Я думаю, это может быть Это ваше DELETE утверждение, которое вызывает ошибку.

Удалите * после DELETE, и все должно быть в порядке.

0 голосов
/ 07 октября 2010

Проверьте, используете ли вы символ 'или символ ´ (последний - ударение)

0 голосов
/ 07 октября 2010

Попробуйте это:

$q = $this->db->query('SELECT * FROM bans WHERE ip="' . $ip . '"');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...