我使用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
,则将找到它的行添加到新数组中进行处理。
有什么想法?提前谢谢。
答案 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子句,该语句将选择所有行
答案 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