2014-01-20 116 views
0

當我在PHP運行這段代碼中的值返回正確MySQL的NUM_ROWS犯規返回值(SELECT 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:同樣的選擇 - 進入代碼似乎完美地運行在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 Sybase 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語句的任何特殊原因。

我會說,除非你有特殊原因使用它,最好使用正常的SELECT語句這樣

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

,然後用mysql_fetch_assoc檢索來自不同列中的數據。這將使您的數據庫服務器的性能稍微好一些,工作量也稍微減少

+0

我之所以使用變量,是因爲我需要在更多的時候使用它們MySQL語句,pradeeps答案沒有幫助我返回正確的num_rows值,但sudhirs答案。 – user3160134

+0

明白了。儘管你想得到你想要的東西,但這很好。 :)@ user3160134 – aaaaahhhhh

1

由於SELECT ... INTO語句不直接返回數據(甚至在MySQL控制檯不會diplay的SELECT語句的結果,只有像

Query OK, 1 row affected (0.01 sec) 

不能使用num_rows功能。

所以用echo $result->affected_rows來代替

+0

mmhh,聰明的技巧謝謝你的 – user3160134