2014-09-02 49 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實現。 – 2014-09-02 03:35:28

+0

哎呀,沒有人注意到有SQL注入問題? – Raptor 2014-09-02 03:36:47

+0

你能迴應$ _SESSION ['username'] ['user_id']看看這裏輸出了什麼? – kn3l 2014-09-02 03:37:31

回答

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); 
} 

和創建mysqli連接實例

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 

在這之前與

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

稱它爲我也強烈建議運行此會使mysqli報告錯誤作爲例外,因此avoi需要編寫一些錯誤檢查代碼。