2014-09-02 2 views
-1

Я пытаюсь запустить этот запрос с MySQLi:PHP Mysqli проблема с запросом - ошибка в вашем SQL синтаксиса

"SELECT * FROM campaigns WHERE user_id = ".$_SESSION['username']['user_id']." AND status = 'Paused'" 

И я получаю следующее сообщение об ошибке:

Был ошибка выполнения запроса [У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '\' Приостановлено \ '' по строке 1]

Я искал решение, но не нашел его.

Любые предложения?


Подробнее Код

public function query($query) { 
    $query = $this->db2->real_escape_string($query); 

    if(!$result = $this->db2->query($query)) { 
     die('There was an error running the query [' . $this->db2->error . ']'); 
    } 

    $this->count = $result->num_rows; 

    return mysqli_fetch_all($result, MYSQLI_ASSOC); 

    $result->free(); 
} 
+1

Предложение 1 будет использовать привязку параметров ... Кроме того, опубликуйте реализацию этого запроса PHP. –

+0

Ой, никто не заметил, что есть проблемы с SQL-инъекциями? – Raptor

+0

можете ли вы эхо $ _SESSION ['username'] ['user_id'] посмотреть, что здесь выводится? – kn3l

ответ

1

Я действительно избежать методы обертки запроса, как они делают это трудно обеспечить значения параметров, особенно Mysqli. Начните с чего-то более предписывающим, например

public function getUserCampaigns($userId, $status) { 
    $stmt = $this->db2->prepare('SELECT * FROM campaigns WHERE user_id = ? AND status = ?'); 
    $stmt->bind_param('is', $userId, $status); 
    $stmt->execute(); 

    $result = $stmt->get_result(); 
    return $result->fetch_all(MYSQLI_ASSOC); 
} 

и назвать его

$campaigns = $obj->getUserCampaigns($_SESSION['username']['user_id'], 'Paused'); 

Я также настоятельно рекомендую запустить это перед созданием mysqli экземпляра соединения

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 

как это сделают mysqli сообщают об ошибках как исключения, таким образом avoi что нужно написать кучу кода проверки ошибок.

Смежные вопросы