2014-09-02 4 views
-1

당신의 SQL 구문 오류 :PHP MYSQLI 문제 - 내가 mysqli이 쿼리를 실행하기 위해 노력하고있어

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

그리고 다음과 같은 오류를 받고 있어요을 :

있었다

쿼리 실행 오류 [[SQL 구문에 오류가 있습니다. 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. '\'Paused \ 'at line 1 근처에서 사용하십시오.

해결책을 찾았지만 찾을 수 없습니다.

제안 사항?


가 어려운 매개 변수 값을 제공 할 수 있도록 나는 정말 특히 mysqli에 쿼리 래퍼 방법을 피할 것

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

더 코드입니다. 예를

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으로 예외를보고합니다. 따라서 오류가 발생했습니다. 오류 검사 코드를 작성할 필요가 없습니다.

관련 문제