簡體   English   中英

MySQL查詢的優化-提取PHP

[英]Optimization for MySQL Query - Fetch PHP

<?php function ss($s1, $s2, $s3, $s4, $s5, $s6) {
  $sonucArray = array("alti" => 0, "bes" => 0, "dort" => 0, "uc" => 0, "iki" => 0);
  $sayiArray = array($s1, $s2, $s3, $s4, $s5, $s6);
  $sayiArraySql = join(',',$sayiArray);  
  $query = mysql_query("select * from loto where 
                                  s1 in ($sayiArraySql) or
                                  s2 in ($sayiArraySql) or
                                  s3 in ($sayiArraySql) or
                                  s4 in ($sayiArraySql) or
                                  s5 in ($sayiArraySql) or
                                  s6 in ($sayiArraySql)");

  while ($record = mysql_fetch_array($query)) {
      $controlArray = array($record["s1"],$record["s2"],$record["s3"],$record["s4"],$record["s5"],$record["s6"]);
      $diffArray = array_diff($sayiArray,$controlArray);

      if (count($diffArray) == 0)
          $sonucArray["alti"]++;
      else if (count($diffArray) == 1)
          $sonucArray["bes"]++;
      else if (count($diffArray) == 2)
          $sonucArray["dort"]++;
      else if (count($diffArray) == 3)
          $sonucArray["uc"]++;
      else if (count($diffArray) == 4)
          $sonucArray["iki"]++;      
  }

  return $sonucArray;
}

mysql_fetch_array; 使用太多的CPU並沒有速度!

“ s1-s2-s3-s4-s5-s6”是整數。

相反,應該是什么代碼? 我知道PHP不足。 有人建議我“ mysql_fetch_row”,但我無法通過改寫來寫

我應該怎么?

您的函數使用mysql_fetch_row:

<?php 
function ss($s1, $s2, $s3, $s4, $s5, $s6) 
{
    $sonucArray = array("alti" => 0, "bes" => 0, "dort" => 0, "uc" => 0, "iki" => 0);
    $sayiArray = array($s1, $s2, $s3, $s4, $s5, $s6);
    $sayiArraySql = join(',',$sayiArray);  
    $query = mysql_query("select s1, s2, s3, s4, s5, s6 from loto where 
                              s1 in ($sayiArraySql) or
                              s2 in ($sayiArraySql) or
                              s3 in ($sayiArraySql) or
                              s4 in ($sayiArraySql) or
                              s5 in ($sayiArraySql) or
                              s6 in ($sayiArraySql)");

    while ($record = mysql_fetch_row($query)) 
    {
        $controlArray = array($record[0],$record[1],$record[2],$record[3],$record[4],$record[5]);
        $diffArray = array_diff($sayiArray,$controlArray);

        if (count($diffArray) == 0)
            $sonucArray["alti"]++;
        else if (count($diffArray) == 1)
            $sonucArray["bes"]++;
        else if (count($diffArray) == 2)
            $sonucArray["dort"]++;
        else if (count($diffArray) == 3)
            $sonucArray["uc"]++;
        else if (count($diffArray) == 4)
            $sonucArray["iki"]++;      
    }
    return $sonucArray;
}

mysql_fetch_row僅使用整數而不是字段名稱作為返回數組中的索引。 $ record [0]將根據您的sql請求成為行中的第一個字段。 這就是為什么我在請求中寫每個字段名稱而不僅僅是*的原因,以確保順序相對應。

希望能有所幫助。

暫無
暫無

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

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