所以我这样做是为了检索我的整个表:
$result = mysql_query( 'SELECT * FROM mytable' );
然后,在我的 PHP 页面的另一部分,我执行另一个查询(针对特定行):
$result2 = mysql_query( 'SELECT * FROM mytable WHERE id = ' . $id );
$row = mysql_fetch_array( $result2 );
因此,我正在执行两个查询。但是,我真的不必那样做,对吗?我的意思是,我在第二个查询中检索的行已经存在于 $result
(我的第一个查询的结果)中,因为它包含我的整个表。
因此,我不想执行第二个查询,而是想直接从 $result
中提取所需的行(同时保持 $result
本身完好无损)。
我该怎么做?
好的,这就是我实现它的方式:
function getRowById ( $result, $id )
{
while ( $row = mysql_fetch_array( $result ) ) {
if ( $row['id'] == $id ) {
mysql_data_seek( $result, 0 );
return $row;
}
}
}
最佳答案
在第一次查询缓存数据后:
$rows = array();
while($row=mysql_fetch_array($result) {
$rows[$row[0]] = $row;
}
然后简单地访问数据使用:
$row = $rows[$id];
id 必须是您所在领域的第一个列才能起作用。
关于php - 如何在 MySQL 查询结果中查找特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10164035/