一起使用mysql_fetch_assoc和mysql_result?

时间:2011-04-16 10:08:44

标签: php mysql loops

我在同一个PHP脚本中尝试使用mysql_fetch_assocmysql_result时遇到了很大麻烦。

最初(当不使用mysql_result函数时)我使用mysql_querymysql_fetch_assoc的组合获得了所需的数据库值,一切都很好。然后我在代码中添加了2行,以使用mysql_result获取某些“标题”字段值。

现在如果我运行我的脚本,因为它在下面我将只收到1个结果,即使有2个结果。然后,如果我将do/while循环向上移动,使其位于其他2个代码块(mysql_fetch_assocmysql_result行)之间,我将收到所需的2个结果。

我需要在mysql_result部分之后进行循环,因此在它之前放置循环不是一个选项。

// connect to DB and get values
mysql_select_db($database, $mywebsite);
$query_not_related_before = "SELECT  * FROM table  limit 2";
$not_related_before = mysql_query($query_not_related_before, $ mywebsite);
$row_not_related_before = mysql_fetch_assoc($not_related_before);


// Extract just the results from the title field (the problem area!)
$before_essayid4 = mysql_result($not_related_before,0, 'title');
$before_essayid5 = mysql_result($not_related_before,1, 'title');


// Display results etc
do { 
echo "<br />".$row_not_related_before['title']."<br />";} 
while ($row_not_related_before = mysql_fetch_assoc($not_related_before));

Plase help,

非常感谢,

大卫

3 个答案:

答案 0 :(得分:1)

我不确定这是否能解决您的问题,但我认为您应该“seek”结果。

mysql_data_seek ($not_related_before, 0)

另外,请在 mysql_result 页面上查看警告:

  

不应该调用mysql_result()   混合调用其他功能   处理结果集。

希望这会有所帮助;)

答案 1 :(得分:0)

你得到一行,因为第一行已在此处请求:

$row_not_related_before = mysql_fetch_assoc($not_related_before);

所以我认为你必须将结果指针移动到开头:

mysql_data_seek($not_related_before, 0);
// Display results etc
do { 
echo "<br />".$row_not_related_before['title']."<br />";} 
while ($row_not_related_before = mysql_fetch_assoc($not_related_before));

答案 2 :(得分:0)

更简单的解决方案是使用2D数组,我总是发现mysql函数有点麻烦。

<?php
$result = mysqli_query(db_connect(),$query);
$result_out = array();
        if(@mysqli_num_rows($result))
            while($row=mysqli_fetch_array($result,MYSQLI_ASSOC))$result_out[]=$row;
foreach($result_out as $row)
{
 echo "<br />".$row['title']."<br />"; 
}
?>

HTH