2009-09-30 16 views
4

我试图检查一个字符串是否与表中特定列中的一个字段匹配。为此,我需要从结果对象中获取所有行。我使用php 5.2.x所以不能使用fetch_row_all方法;相反,我试图建立一个新的数组,将保存所有行。获取具有mysqli结果的行数组

这里是我的代码:

$sql = new mysqli($config['host'],$config['user'],$config['pass'],$config['db_name']); 
     if (mysqli_connect_errno()) 
     { 
      printf("Connect failed: %s\n", mysqli_connect_error()); 
      exit(); 
     } 
     $query = "SELECT domain FROM services"; 
     $result = $sql->query($query);   
     while($row = $result->fetch_row()); 
     { 
      $rows[]=$row; 
     } 
     $result->close(); 
     $sql->close(); 
     return $rows; 

$rows应该是一个包含所有,行,而是我得到一个空数组新的数组。

任何想法为什么会发生这种情况?

回答

19

你有一个轻微的语法问题,即一个错误的分号。

while($row = $result->fetch_row()); 

注意到底是分号?这意味着下面的块没有在循环中执行。摆脱这一点,它应该工作。

而且,你可能要检查该查询实际工作:

$sql = new mysqli($config['host'], $config['user'], $config['pass'], $config['db_name']); 
if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit; 
} 
$query = "SELECT domain FROM services"; 
$result = $sql->query($query);  
if (!$result) { 
    printf("Query failed: %s\n", $mysqli->error); 
    exit; 
}  
while($row = $result->fetch_row()) { 
    $rows[]=$row; 
} 
$result->close(); 
$sql->close(); 
return $rows; 
+1

哦...我应该怎样尴尬的工作不会迟到(这是上午2:30在这里:) 感谢克莱这个工作出:) –