2014-01-20 3 views
0

는 값이 제대로MySQL의 NUM_ROWS 나던 반환 값은 (INTO를 선택)

$result = $mysqli->query("SELECT `id`, `last_key_ID` FROM `customers` WHERE `email` = '{$email}';"); 

을 반환하지만 최대한 빨리 그것에 INTO 구문을 추가 한, NUM_ROWS는 값을 반환하지 않습니다 :

$result = $mysqli->query("SELECT `id`, `last_key_ID` INTO @id, @last_key_id FROM `customers` WHERE `email` = '{$email}';"); 

SELECT-INTO 코드를 인쇄 한 후 아무 라인 에코

echo $result->num_rows; 

PS : 동일한 셀렉트 INTO 코드가 MySQL 콘솔에서 완벽하게 실행되는 것 같습니다. 왜 PHP에서는 작동하지 않습니까?

답변

1

는 시도 :

$mysqli->query('SET @id := 0'); 
$mysqli->query('SET @last_key_id := 0'); 
$result = $mysqli->query("SELECT @id:=id, @last_key_id:=last_key_ID FROM `customers` WHERE `email` = '{$email}';"); 
+0

감사합니다. 이것은 내가 찾고 있었던 것입니다. – user3160134

+0

당신은 .. 환영합니다. :) –

0

MySQL 서버는 SELECT ... INTO TABLE 사이베이스 SQL 확장을 지원하지 않습니다.

대신, MySQL 서버는 기본적으로 같은 일이다 INSERT INTO ... SELECT 표준 SQL 구문을 지원합니다.

Example...

Read more...

0

이유는 MySQL의 내로 세션 변수에 대한 간단한 쿼리 출력을 할당하는, 간단합니다.

할당 백엔드에 일어나고있다. 이제 mysql 세션 변수를 가져와야한다.

이 쿼리를보십시오 :

$result = $mysqli->query("SELECT `id`, `last_key_ID` INTO @id, @last_key_id FROM `customers` WHERE `email` = '{$email}';SELECT @id, @last_key_id;"); 

희망이 당신을 도울 것입니다.

0

프라 딥는 그것이 작동되도록 충분히 좋은 것 한 가지 대답을 기록했다. 하지만 여전히 SELECT INTO 문을 사용하는 특별한 이유는 없습니다. 당신이 그것을 사용하는 특별한 이유가없는 한 내가 말할 것이다

, 그것은 다른 열에서 데이터를 검색 할 수 mysql_fetch_assoc를 사용하여,이

$result = $mysqli->query("SELECT `id`, `last_key_ID` FROM `customers` WHERE `email` = '{$email}';"); 

과 같은 일반 SELECT 문을 사용하는 것이 좋습니다. 이렇게하면 DB 서버의 성능이 약간 향상되고 작업 부하가 줄어 듭니다. SELECT ... INTO 문을 직접 데이터를 반환하지 않습니다

+0

이유는 제가 변수를 사용하는 이유는 몇 가지 더 사용할 것이기 때문입니다. MySQL 문, pradeeps 대답 didnt 정확한 num_rows 값을 반환하는 데 도움이되지만 sudhirs 대답 않았다. – user3160134

+0

알았어요. 당신이 원하는 것을 얻는 것이 좋다. :) @ user3160134 – aaaaahhhhh

1

때문에 (심지어 MySQL의 콘솔에서 당신이 사용할 수 없습니다 SELECT 문의 결과와

Query OK, 1 row affected (0.01 sec) 

같은 단지 뭔가를으로 모니터하지 않습니다 num_rows 기능.

대신 echo $result->affected_rows을 사용하십시오.

+0

mmhh, 똑똑한 속임수 감사합니다. – user3160134