如何通过PHP迭代MySQL的搜索结果?

时间:2010-11-11 12:12:01

标签: php mysqli

当我使用

 function __construct()
    {
      // open db
      $this->db = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
      if (!$this->db)
        die(mysql_error());

      $this->db->query("SET NAMES 'utf8';");
    }


$result=$this->db->query("SELECT OrgNo, CompanyName FROM ematch WHERE CompanyName LIKE '%$word%';");
           $num=$result->num_rows;
          print $num; 
           $i=0;
            while ($i < $num) 
            {
                 $OrgNo=mysql_result($result,$i,"OrgNo");
                 $CompanyName=mysql_result($result,$i,"CompanyName");
                 $i++;
                 print $OrgNo.' '.$CompanyName.'<br>';
            }

我收到此错误: 警告:mysql_result():提供的参数不是有效的MySQL结果资源 没有任何结果。

3 个答案:

答案 0 :(得分:8)

您可以将代码更改为:

$result = $this->db->query("SELECT OrgNo, CompanyName FROM ematch WHERE CompanyName LIKE '%$word%';");

while ($row = mysqli_fetch_array($result)) 
{
  print $row['OrgNo'] .'<br />';
  print $row['CompanyName'] .'<br />';
}

假设从$result方法返回的query是一个结果资源。

答案 1 :(得分:0)

您将要向我们展示您正在使用的数据库包装器/类,但我想猜测前进的方向:

$result = $this->db->query("SELECT OrgNo, CompanyName FROM ematch WHERE CompanyName LIKE '%$word%';");
while($row = mysqli_fetch_array($result)) {
    print $row['OrgNo']." ".$row['CompanyName']."<br>";
}

当您使用自定义数据库包装器时,您最好逐个使用它来获取行,而不是使用mysqli_fetch_array();

答案 2 :(得分:0)

尝试从SQL语句中删除分号。

"SELECT OrgNo, CompanyName FROM ematch WHERE CompanyName LIKE '%$word%';"

应该是

"SELECT OrgNo, CompanyName FROM ematch WHERE CompanyName LIKE '%$word%'"