2012-07-28 66 views
0

请告诉,为什么这段代码错了?从mysql返回结果,使用用户函数

function myres() { 
    $db = new mysqli("localhost","userrr","pass","mvc"); 
    $res = $db->query("SELECT * FROM news "); 
    return $res; 
} 


while ($row = myres()->fetch_row()) { 
    echo $row[0]; 
} 

P.S. 此代码工作:

$db = new mysqli("localhost","userrr","pass","mvc"); 
$res = $db->query("SELECT * FROM news "); 
while ($row = $res->fetch_row()) { 
    echo $row[0]; 
} 
+1

您的'myres()'执行每次'while'条件被检查。如果你在'while'循环之前将它提取到一个变量,它会更好。 – DCoder 2012-07-28 15:59:08

+1

为什么你不把这个查询从函数中取出,或者让它返回一个数组并执行'foreach'? – David 2012-07-28 15:59:09

+0

非常感谢,我的错误不容乐观,谢谢。 – 2012-07-28 16:11:16

回答

2

在这里,您拨打myres()每一次,我想:

while ($row = myres()->fetch_row()) { 
    echo $row[0]; 
} 

所以每次$row包含结果的第一行,它不会停止。它会工作正常,我认为:

$res = myres(); 

while ($row = $res->fetch_row()) { 
    echo $row[0]; 
} 
+0

这不是一个答案,而且会更适合作为评论。 – David 2012-07-28 16:00:52

+0

非常感谢 – 2012-07-28 16:16:26

+0

这给了它每次被称为新的想法的信任:http://codepad.org/9DeSMUvu – 2012-07-28 16:18:00