2014-04-26 2 views
0

나는 PHP에 익숙하지 않고 작은 웹 페이지를 작성한다. 나는 mysql querys를하기 위해 mysqli 모듈을 사용한다.연결과 직접 문자열의 차이점

방금 ​​문제가 발생하여 쿼리에서 아무 것도 반환하지 않았습니다. 빈 결과 집합도 아닙니다. $result 변수는 null입니다.

$this->connection = mysqli_connect($this->host,$this->db_user,$this->db_pass, $this->database); 
$result = $this->connection->query($sql) 

그런 다음 $result 비어 :

나는 내가 다음과 같이 쿼리를 제출 한 날

$sql = "SELECT u.username, e.title, e.text, e.time" 
    . "FROM entry e" 
    . "LEFT JOIN user u" 
    . "ON e.user_id = u.ID"; 

에 대해 생성 된 PHP 코드, phpMyAdmin을 사용했다. 나는 또한 성공하지 않고 mysqli_use_result()과 다른 것들을 시도했다.

는 웹 검색의 시간 후에 난 그냥 직접 mysqli_query()에 문을 삽입 시도하고

$result = $this->connection->query("SELECT u.username, e.title, e.text, e.time FROM entry e LEFT JOIN user u ON e.user_id = u.ID"); 

그래서, 연결 및 직접 문자열을 입력 사이에 큰 차이가 근무? 내가 뭔가 잘못하고 있는거야? 아니면 mysqli 나 PHP의 버그인가?

SELECT u.username, e.title, e.text, e.timeFROM entry eLEFT JOIN user uON e.user_id = u.ID 
//          ^^   ^^    ^^ 

공지 사항 누락 된 공간 :

답변

3

첫 번째 줄에 생성 된 코드는 다음과 같다? 문자열 연결을 수행 할 때 마술처럼 삽입되지 않습니다. 내가 좋겠 개인적으로

$sql = "SELECT u.username, e.title, e.text, e.time " 
    . "FROM entry e " 
    . "LEFT JOIN user u " 
    . "ON e.user_id = u.ID"; 

: (당신은 단지 하나의 문자열에 여러 행을 할 수 있기 때문에 제 생각에 바보되는 그런 식으로 작성하는 경우) 원래 코드는 (끝에 공백) 같은 것을해야한다 다음을 선호합니다 :

$sql = " 
    SELECT u.username, e.title, e.text, e.time 
    FROM entry e 
    LEFT JOIN user u 
    ON e.user_id = u.ID 
"; 
+0

감사합니다. 당신의 대답은 완전히 이해가됩니다. 그러나 이것은 처음 프로그래밍 언어가 아니기 때문에 지금은 조금 어리 석다 .- – 0xAffe

2

연결은 가능하지만 결과는 SQL 문이 올바르지 않습니다.

SELECT u.username, e.title, e.text, e.timeFROM entry eLEFT JOIN user uON e.user_id = u.ID 

당신이 볼 수 있듯이, 때문에 부족 : -가 될 것입니다

$sql = "SELECT u.username, e.title, e.text, e.time" 
    . "FROM entry e" 
    . "LEFT JOIN user u" 
    . "ON e.user_id = u.ID"; 

당신은 결과 SQL 문에 공백이없는 것을 볼 수 있습니다 : 당신은이 코드가 생성하는 것에 대해 생각할 때 공백 인 경우이 문은 유효하지 않으며 오류로 인해 결과가 표시되지 않습니다 (코드에서 무시되는 것처럼 보임). 당신이 연결을 사용하려는 경우, 당신은과 같이 공백을 추가한다 : 당신이 문 쉽게되는 일을하려고하고 모두가 읽을 경우

$sql = "SELECT u.username, e.title, e.text, e.time " 
    . "FROM entry e " 
    . "LEFT JOIN user u " 
    . "ON e.user_id = u.ID"; 

그러나, 당신은 단순히 하나의 문자열로 여러 줄에 쓸 수 있습니다 :

$sql = "SELECT u.username, e.title, e.text, e.time 
     FROM entry e 
     LEFT JOIN user u 
     ON e.user_id = u.ID"; 

이것은 잘 작동합니다.

+1

우리 게시물이 모두 비슷하다는 것은 거의 무섭다. – h2ooooooo

+1

@ h2ooooooo "위대한 생각이 비슷하다고"말할 수 있습니다.답의 차이가 2 분이라면, 답을 작성하기 전에 답을 쓰는 것이 합리적이라고 결론 내릴 수 있습니다. –

+0

단순히 붙여 넣기 광산을 복사하지 않았다는 것에 완전히 동의합니다. - 풍자적이지는 않겠지 만 - 나는 단순히 우리가 두 가지 동일한 수정 사항을 제시 한 방법에 대해 매우 간단하다고 생각했습니다. (마지막 질의에서 약간 다르게). – h2ooooooo

관련 문제