簡體   English   中英

如何為mysql_query返回數組?

[英]how to return array for mysql_query?

  // 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);

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

對我來說,功能在上述指定范圍內運行比其他方法要快。 查詢將返回數組嗎?

感謝所有幫手!

  1. 可以使用JOIN或SUB SELECT將查詢數從2減少到1嗎? 可能沒有太大的助益,但值得一試和更清潔的實現。

  2. 瓶頸在哪里? 最有可能的數據庫,而不是PHP代碼。

  3. 表/列是否正確索引? 對兩個查詢運行EXPLAIN。

最簡單的方法是將第一個查詢作為子查詢包括在內,從而避免了一次轉向數據庫和許多代碼:

  // 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);

除非有更多理由將第一個分開,否則在您的代碼示例中不可見。

如果使用PDO(無論如何建議...),則可以使用fetchAll()一次返回所有結果數組。

對於第二個查詢,可以在MySQL中使用字符串連接直接返回所需的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM