2014-01-20 169 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