0

我有以下代码,它应该为我工作,除了在查询完成之前需要很长时间之外?我怎样才能让它更快?有 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;
        }
    }
4

2 回答 2

0

$result变量被重新用于插入操作。然后$result在 while 循环中测试该值。

 $result_insert = mysql_query("INSERT INTO huur etc etc")
于 2013-03-16T12:09:23.200 回答
0

如果我们假设这是您正在运行的所有代码,那么第一个查询几乎没有用,因为您想要解析所有行,无论有多少。所以你可以一起跳过前三行。

然后是 $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);
}
于 2013-03-16T15:22:28.607 回答