2017-04-20 2 views
0

나는 3 개의 열 nEspe2, nEspe3 및 nEspe4를 가진 데이터베이스를 가지고있다. 쿼리는 정상적으로 작동하고 $ result2는 TRUE (1)입니다. 난 $ result2를 인쇄 할 때, 난 구 결과는 다음과 같다 :NULL을 반환하는 PHP mysqli_fetch_array

mysqli_result 개체 ([current_field] => 0 [FIELD_COUNT] => 3 [길이] => [NUM_ROWS] => 1 타입] => 0)

내가 사용하는 코드는 다음입니다 :

$queryEspecialidad = "SELECT nEspe2, nEspe3, nEspe4 FROM namesEspe WHERE nEspe1 = '$especialidad'"; 
if(($result2 = mysqli_query($conn,$queryEspecialidad))!= FALSE) 
{ 
      print_r($result2); 
      echo "QueryEspecialidad realizada correctamente<br>"; 
      $row2 = mysqli_fetch_array($result2); 
      if($row2 == NULL){echo "Se obtiene NULL de row2XXXXXXXXXXXXXXXXXXXXXXX<br>";} 
...<more code>... 
} 

$ ROW2 항상 NULL이다. 같은 문제가있는 mysqli_fetch_row도 시도했다. 각 쿼리는 3 개의 열과 함께 1 행만 반환합니다 (일부 열은 비어있을 수 있음).

+0

SQL 인젝션을 막기 위해 준비된 문에 대해 알아보기 – Jens

+0

mysqli_fetch_all()을 테스트로 사용해보십시오 - 하나의 행을 리턴하는지 그렇지 않은지 리턴합니까? 또한 mysqli_data_seek ($ result2, 0)'를 사용하여 첫 번째 행을 어떻게 든 건너 뛰지 않도록하십시오. –

답변

0

문제점을 발견했습니다. SELECT에 '' '또는 유사한 액센트가있을 때 발생합니다. NavyCat은 잘 작동하지만 SELECT가 PHP로 작성된 경우 쿼리가 실패합니다.

1

우선 부울 (및 NULL) 비교에서 ===!==을 사용하는 것이 좋습니다. 그렇지 않으면 예 : 정수 1은 true과 동일합니다.

@Vipul 둘째 행이 더 이상 남아 있지 않으면 mysqli_fetch_arrayNULL을 반환하므로 OP가 해당 문과 일치합니다.

어쨌든 설치 프로그램을 로컬에서 재현했으며 모든 것이 예상대로 실행되었지만 "Se obtiene NULL de ...."이 표시되지 않았습니다. 나에게, 너는 어떻게해서든지 처음이자 유일한 행을 건너 뛴 것처럼 보인다.

+0

당신이 옳았습니다. 부울 비교에 대한 장점도 주셔서 감사합니다. 문제는 억양이었다. 이것이 쿼리가 작동하지 않는 이유입니다. – Asier

관련 문제