0

読み込みが速くなるようにスクリプトを最適化しようとしています。今、私はすでに何時間もここに座っていますが、正しく動作しません。

最初の部分は正常に動作しますが、うまくいかないのは、sire_id ($sr query) と dam_id (($ dr query) の名前を取得することで、それらすべての結果「配列」として表示されます。

ここまで書いてきたのは

$query = "SELECT COUNT(sire_id) as c, sire_id FROM dog WHERE sire_id IS NOT NULL GROUP BY sire_id ORDER BY c desc LIMIT 150"; 
$result = mysql_query($query) ;
$i=0;
while ($line = mysql_fetch_array($result)) {
    $sireQuery = "SELECT name, id, sire_id, dam_id FROM dog WHERE id = '$line[sire_id] '";
    $sireResult = mysql_query($sireQuery) ;
    $sireLine = mysql_fetch_array($sireResult);
    $sr = mysql_query("SELECT name FROM dog WHERE id like $sireLine[2]") ;
    $sl = mysql_fetch_array($sr);       
    $dr = mysql_query("SELECT name FROM dog WHERE id like $sireLine[3]") ;
    $dl = mysql_fetch_array($sr);                       
    $i++;

    echo "</td><td>".$i. '&nbsp;', '&nbsp;', '&nbsp;',"<a href='details.php?id=".$line[1]."'>"  .$sireLine[0]. "</td>
          <td>".$line[0]." </td>
          <td>".$sl." </td>
          <td>".$dl." </td></tr>";      
}
4

2 に答える 2

0

私はあなたの例を書き直しました:

$query = "SELECT COUNT(sire_id) as c, sire_id FROM dog WHERE sire_id IS NOT NULL GROUP BY sire_id ORDER BY c desc LIMIT 150";
$result = mysql_query($query) ;
$i=0;

while ($line = mysql_fetch_assoc($result)) {
    $sireQuery = "SELECT name, id, sire_id, dam_id FROM dog WHERE id = {$line['sire_id']}";
    $sireResult = mysql_query($sireQuery) ;
    $sireLine = mysql_fetch_assoc($sireResult);
    $sr = mysql_query("SELECT name FROM dog WHERE id = {$sireLine['sire_id']}") ;
    $sl = mysql_fetch_assoc($sr);
    $dr = mysql_query("SELECT name FROM dog WHERE id = {$sireLine['sire_id']}") ;
    $dl = mysql_fetch_assoc($sr);
    $i++;

    echo "</td><td>".$i. '&nbsp;', '&nbsp;', '&nbsp;',"<a href='details.php?id=".$line[1]."'>"  .$sireLine[0]. "</td>
          <td>{$line['c']} </td>
          <td>{$sl['name']} </td>
          <td>{$dl['name']} </td></tr>";
}
于 2013-06-16T18:55:27.050 に答える