从mysql_fetch_array结果中获取行号

时间:2013-06-06 12:09:45

标签: php mysql database

我使用select *从mysql数据库中提取数据,目的是多次使用数据而不使用WHERE重复进行sql查询。

使用此数据,我使用

提取包含搜索元素的行
while($row=mysql_fetch_array($query_result)){  <<<if match add to new array>>>  }

由于有数千行,这比我想要的时间更长。

我正在尝试使用:

$row=mysql_fetch_array($query_result);
$a = array_search($word_to_check, $row);
echo $a;

这会提取正确的sql标题,但不会提取行号。我想要实现的是

如果在mysql_fetch_array($ query_result)中找到$word,则将找到它的行添加到新数组中进行处理。

有什么想法?提前谢谢。

2 个答案:

答案 0 :(得分:2)

不要使用 mysql_ *函数它们会被删除。请改用 mysqli pdo

在php中搜索mysql结果数组是不明智的,而在mysql中可以完成。假设您有表格,并且您想要查找数字列中大于5的所有数字

  SELECT FROM table_name WHERE number>5

查找文本可以使用简单子句

  SELECT FROM table_name WHERE name = 'username'

您还可以创建更复杂的条件。

来自MYSQL手册:

  

WHERE子句,如果给定,则表示行必须满足要选择的条件。 where_condition是一个表达式,对于要选择的每一行,其计算结果为true。如果没有WHERE子句,该语句将选择所有行

Check this link

答案 1 :(得分:0)

如果您想将查询限制为仅一次,请将所有结果提取到临时数组中并从中进行搜索,如下所示

<?php
$all_rows=array();
$match_rows=array();
$i=0;
$limit=100000;
while($row=mysql_fetch_array($query_result)){  
   $all_rows[]=$row;
   if($i % $limit == 0){  // this part only functions every 100,000 cycles.
      foreach($all_rows as $search_row){
        if(array_search($word_to_check, $search_row)
            $match_rows[]=$search_row;
        } 
      $all_rows=array();//reset temporary array
   }
   $i++;
}

//This solution assumes the required word can be found in mulitple columns