0

我有这个代码(请参阅下文)

$sql = "SELECT * FROM records";
$result = mysqli_query($this->db,$sql);

while($row = mysqli_fetch_assoc($result)){
    $itemid = $row['id'];
    $itemname = $row['itemname'];
    $itemdesc = $row['itemdesc'];
    $brand = $row['brand'];
    $serialno = $row['serialno'];
    $nostock = $row['nostock'];
    $price = $row['price'];
    $onsale = $row['onsale'];
    $poster = $row['poster'];
    $thedate = $row['thedate'];

    $sql = "INSERT INTO backupp SET id='$itemid', itemname='$itemname', itemdesc='$itemdesc', brand='$brand', serialno='$serialno', nostock='$nostock', price='$price', onsale='$onsale', poster='$poster', thedate='$thedate'";
    $result = mysqli_query($this->db,$sql) or die(mysqli_error($this->db));
    return $result;
}

从上面的代码可以看出,它会首先从名为“records”的数据库表中提取所有数据,然后将每一行放入相应的变量中,然后插入存储的数据(那些从数据库表名中提取的数据“记录”并存储在相应的变量上)到名为“backupp”的数据库表中。现在,问题是,它只将一条记录添加到备份中(首先提取的记录),它应该将所有从名为记录的数据库表中提取的记录添加到名为备份的数据库表中。为什么??任何建议、建议、线索和想法将不胜感激。谢谢!

PS:它就像导出和导入到具有相同结构的其他表,但我有我自己的原因我想这样做,并假设我已经成功连接到一个名为“inventory”的数据库($this->db)并且有db 表名,例如具有相同结构的“records”和“backupp”。

4

3 回答 3

6

您可以通过这种方式轻松备份同一张表:INSERT INTO backupp SELECT * FROM records

于 2015-03-26T15:16:16.473 回答
3

您在 while 循环中有一个 return 语句,导致它在一次迭代后退出。

删除return $result;线,它应该工作。

于 2015-03-26T15:15:03.103 回答
0

将您的代码更改为此(见下文)。

$sql = "SELECT * FROM records";
$result = mysqli_query($this->db,$sql);
$x = 0;
while($row = mysqli_fetch_assoc($result)){
$itemid = $row['id'];
$itemname = $row['itemname'];
$itemdesc = $row['itemdesc'];
$brand = $row['brand'];
$serialno = $row['serialno'];
$nostock = $row['nostock'];
$price = $row['price'];
$onsale = $row['onsale'];
$poster = $row['poster'];
$thedate = $row['thedate'];

$sql = "INSERT INTO backupp SET id='$itemid', itemname='$itemname', itemdesc='$itemdesc', brand='$brand', serialno='$serialno', nostock='$nostock', price='$price', onsale='$onsale', poster='$poster', thedate='$thedate'";
$result = mysqli_query($this->db,$sql) or die(mysqli_error($this->db));

$x++;
}
于 2015-03-26T22:54:13.377 回答