如何将sql结果从一个变量复制到PHP
中没有数组和foreach 的其他。
$query="Select * from table";
$res1=mysql_query($query);
$res2=$res1; // I need somethink like this, simply, like in other languages
while($row=mysql_fetch_array($res1)) {
echo $row['Id'];
}
echo '<br>';
while($row=mysql_fetch_array($res2)) {
echo $row['Id'];
}
首先打印ID,秒打印。
答案 0 :(得分:6)
对于SELECT
次查询,mysql_query()
会在成功时返回resource,这是一个包含对结果集的引用的特殊变量。在此声明$res2=$res1;
中,您只是将引用复制到另一个变量,而不是实际的结果集。在第一个while
循环中,您已经迭代了结果集,因此将资源分配给另一个不会重置的变量。
但您可以使用mysql_data_seek()
函数将结果指针调整为指向结果集的开头,以便您可以再次遍历它。
以下是参考资料:
所以你的代码应该是这样的:
$query="Select * from table";
$res=mysql_query($query);
while($row=mysql_fetch_array($res)) {
echo $row['Id'];
}
echo '<br />';
mysql_data_seek($res, 0);
while($row=mysql_fetch_array($res)) {
echo $row['Id'];
}
旁注:不要使用mysql_*
函数,从PHP 5.5开始不推荐使用它们,并且在PHP 7.0中完全删除它们。请改用mysqli
或pdo
。 And this is why you shouldn't use mysql_*
functions。
答案 1 :(得分:2)
$sql = "SELECT * from table";
$result = mysql_query($sql);
$temp_result = $result;
while ($row = mysql_fetch_assoc($temp_result)) {
// do stuff with $row
}
mysql_data_seek($result, 0);
while($row = mysql_fetch_assoc($temp_result)){
// do other stuff with $row
}