资源ID#14

时间:2012-07-08 04:26:28

标签: php mysql

我想显示多行信息。在不更改我的大部分代码的情况下,如何回显我的网页上有user_id_offerer ='$ offerer'的多行。我确实回应了mysql查询,我得到了资源ID#14的结果,我理解while循环是必要的,但似乎mysql存在问题。我该如何解决这个问题?

澄清:当我使用while循环运行代码时,我收到了第一行的无限循环。我没有收到user_id_offerer ='offerer'的每一行。如何解决这个问题,而不必重新编写代码。

function ergo_data ($offerer) {

  $data = array();
  $offerer = (int)$offerer;

  $func_num_args = func_num_args(); 
  $func_get_args = func_get_args();

  if ($func_num_args > 1) {
          unset($func_get_args[0]);
      $fields ='`' .  implode ('`, `', $func_get_args) . '`';
      $data = mysql_fetch_assoc (mysql_query("SELECT $fields FROM `ergo` WHERE `user_id_offerer` = '$offerer'"));
      return $data;
  }
}

if (logged_in() === true) { 
  $session_user_id = $_SESSION['user_id'];
  $ergo_data = ergo_data($session_user_id, 'primary_key', 'user_id_offerer', 'user_id_seeker', 'ergo', 'ergo_time_submitted');
}

echo $ergo_data['ergo'] . '<br>'; 
echo username_from_user_id($ergo_data['user_id_offerer']) . '<br>'; 
echo username_from_user_id($ergo_data['user_id_seeker']) . '<br>'; 
echo $ergo_data['ergo_time_submitted'];`

1 个答案:

答案 0 :(得分:0)

我认为你需要从你的ergo_data()函数返回mysql_query的结果(而不是mysql_fetch_assoc的结果),然后在循环中调用mysql_fetch_assoc:

// inside ergo_data(), change
// $data = mysql_fetch_assoc (mysql_query("SE ...
// to: 
function ergo_data ($offerer) {
  ...
  return mysql_query("SELECT $fields FROM `ergo`....");
}
...
if (logged_in() === true) { 
    $session_user_id = $_SESSION['user_id'];
    $query_result = ergo_data($session_user_id, 'primary_key', 'user_id_offerer', 'user_id_seeker', 'ergo', 'ergo_time_submitted');
    while($ergo_data = mysql_fetch_assoc($query_result)) {
        echo $ergo_data['ergo'] . '<br>'; 
        echo username_from_user_id($ergo_data['user_id_offerer']) . '<br>'; 
        echo username_from_user_id($ergo_data['user_id_seeker']) . '<br>'; 
        echo $ergo_data['ergo_time_submitted'];
    }
}