簡體   English   中英

PHP的SQL雖然很慢

[英]php sql while very slow

我有以下代碼,該代碼對我來說應該工作正常,除了需要很長時間才能完成查詢之外? 我怎樣才能使其更快? 帶有2條記錄,大約需要1-2分鍾。

$query2 = "SELECT COUNT(*) FROM preordertablet1"; 
$result = mysql_query($query2) or die(mysql_error()); 
$count = mysql_fetch_row($result); 
//$result=mysql_query($query) or die ("Gegevens niet kunnen ophalen uit preorder tabel. Foutmelding: ".mysql_error());
$c=0;
while ($c<=$count) 
    {
    $query="SELECT * FROM preordertablet1 WHERE ID = '$c'";
    $result=mysql_query($query) or die ("gegevens niet geladen uit de preordertabel, fout: ".mysql_error());
    while ($row=mysql_fetch_array($result)) 
        {
        $ID1=$ID1+1;
        $c++;
        $naam=$row['naam'];
        $Postcodehuisnummer=$row['Postcodehuisnummer'];
        $datum=$row['datum'];
        $dagen=$row['dagen'];
        $productid=$row['productid'];
        $subid=$row['subid'];
        //$ID2=$ID1;
        //gegevens in database plaatsen
        $result=mysql_query("INSERT INTO huur (ID, ID2, status, naam, Postcodehuisnummer, datum, dagen, productid, subid) VALUES ('$ID1', '$ID2', '1', '$naam', '$postcodehuisnummer', '$huurdatum', '$aantaldagen', '$productid', '$subid')") or die ("Fout: ".mysql_error());
        echo 'preorder fiets toegevoegd met ID2: ', $ID2,'<br>';
        //$ID1=$ID1+1;
        }
    }

$result變量被重新用於插入操作。 然后在while循環中測試$result值。

 $result_insert = mysql_query("INSERT INTO huur etc etc")

如果我們假設這是您正在運行的所有代碼,則第一個查詢幾乎沒有用,因為您希望解析所有行,無論有多少行。 因此,您可以一起跳過前三行。

然后是$ c變量,除非您需要知道通過該解析可以解析多少行。

然后是第一個循環中的查詢,“ WHERE ID ='$ c'”部分最有可能導致您僅插入一個插入行。 如果ID列是auto_increment主鍵,則插入的第一行的值將至少為1,但是您要進行的第一項檢查是ID = 0,則不返回任何內容。 因此,具有兩行的表的最后一次迭代的ID為1,但不能保證該ID有任何行,但是在您的情況下,有一行,我猜測這是您在其中看到的行您的結果。

在沒有更多有關ID1和ID2之類的信息的情況下,我不會嘗試建議第二次while循環的更正。 也許您可以發布表定義(創建表結構)並進一步說明?

就像其他人所說的,不要使用mysql_函數,這些函數可能會在不推薦使用的任何時候從PHP中消失。

當然,所有這些都是基於對表的猜測,因為您尚未發布表布局或要達到的目的。

為了讓您有所了解,這里有一個更簡單的代碼段,雖然尚不完整,但應該可以為您提供幫助, 請在此處閱讀有關PDO的信息。

$pdo = new PDO(<insert your connection information here>);
$selectStmt = $pdo->query('SELECT * FROM preordertablet1');
$insertStmt = $pdo->prepare("INSERT INTO huur
    (ID, ID2, status, naam, Postcodehuisnummer, datum, dagen, productid, subid)
  VALUES
    (:ID1, :ID2, '1', :naam, :postcode, :datum, :dagen, :productid, :subid)");
$ID1 = 0; // Or whatever starting value you're working from.

while ($row = $selectStmt->fetch(PDO::FETCH_ASSOC)) {
    $ID1++;
    $values = array("ID1" => $ID1, "ID2" => NULL, "naam" => $row['naam'], etc...
    $insertStmt->execute($values);
}

暫無
暫無

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

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