[英]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.