如何为mysql_query返回数组?

时间:2011-01-25 14:16:59

标签: php sql mysql arrays

  // make empty array
  $sqlArray=array();
  $jsonArray=array();


  // START NEED FAST WORKING ALTERNATİVES -----------------------------------------------------
  // first 20 vistors
  $query = "SELECT user_id FROM vistors LIMIT 20"; 
  $result = mysql_query ($query) or die ($query);

  // make vistors user query array
  while ($vstr_line = mysql_fetch_array($result)){
    array_push($sqlArray, $vstr_line['user_id']);
  }

  // implode vistors user array
  $sqlArray_impl = implode("', '", $sqlArray);
 // END NEED FAST WORKING ALTERNATİVES -----------------------------------------------------


  // Get vistors information
  $query = "SELECT id, username, picture FROM users WHERE id IN ('$sqlArray_impl')"; 
  $qry_result = mysql_query($query) or die($query);


  while ($usr_line = mysql_fetch_array($qry_result)){
    array_push($jsonArray, $usr_line['id'].' - '.$usr_line['username'].' - '.$usr_line['picture']);
  }


  print_r($sqlArray);

  echo '<br><br>';

  print_r($jsonArray);

看到我的功能.. 我需要替代快速工作的替代品..

在上面指定的范围内,对我来说,运行速度比替代方案快。 查询将返回数组?

所有助手都是这样的!

3 个答案:

答案 0 :(得分:2)

  1. 您可以使用JOIN或SUB SELECT将查询次数从2减少到1吗?可能不会给予很大的提升,但值得一试和更清洁的实施。

  2. 瓶颈在哪里?很可能是db而不是php代码。

  3. 表/列是否正确编入索引?对两个查询运行EXPLAIN。

答案 1 :(得分:1)

最简单的方法是将第一个查询包含为子查询,从而消除对数据库和大量代码的转向:

  // Get vistors information
  $query = "SELECT id, username, picture FROM users WHERE id IN (SELECT user_id FROM vistors LIMIT 20)"; 
  $qry_result = mysql_query($query) or die($query);

除非有更多理由让第一个单独分开,但在代码示例中不可见。

答案 2 :(得分:0)

如果你使用PDO(无论如何推荐......),你可以使用fetchAll()一次性返回结果数组。

对于第二个查询,您可以使用string concatenation in MySQL直接返回所需的结果。