mysql while 语句中的 insert 语句仅添加 1 条记录
mysql insert statement inside a while statement adds only 1 record
我有这个代码(参考下面)
$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"的数据库table中提取所有数据,然后将每一行放入相应的变量中,然后插入存储的数据(那些从 db table name "records" 中提取并存储在相应变量中的数据)到 db table named "backupp"。现在,问题是,它只向备份添加一条记录(首先提取的记录),据说它应该将所有从 db table 命名记录中提取的记录添加到 db table 命名备份。为什么??任何建议、建议、线索和想法将不胜感激。谢谢!
PS:它类似于导出和导入到具有相同结构的其他 table 但我有自己的理由为什么要这样做并假设我已经成功连接到数据库( $this->db) 称为 "inventory" 并且那里有 db table 名称,例如具有相同结构的 "records" 和 "backupp"。
您在 while 循环中有一个 return 语句导致它在一次迭代后退出。
删除 return $result;
行,它应该可以工作。
您可以通过这种方式轻松备份相同的 table:INSERT INTO backupp SELECT * FROM records
将您的代码更改为此(见下文)。
$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++;
}
我有这个代码(参考下面)
$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"的数据库table中提取所有数据,然后将每一行放入相应的变量中,然后插入存储的数据(那些从 db table name "records" 中提取并存储在相应变量中的数据)到 db table named "backupp"。现在,问题是,它只向备份添加一条记录(首先提取的记录),据说它应该将所有从 db table 命名记录中提取的记录添加到 db table 命名备份。为什么??任何建议、建议、线索和想法将不胜感激。谢谢!
PS:它类似于导出和导入到具有相同结构的其他 table 但我有自己的理由为什么要这样做并假设我已经成功连接到数据库( $this->db) 称为 "inventory" 并且那里有 db table 名称,例如具有相同结构的 "records" 和 "backupp"。
您在 while 循环中有一个 return 语句导致它在一次迭代后退出。
删除 return $result;
行,它应该可以工作。
您可以通过这种方式轻松备份相同的 table:INSERT INTO backupp SELECT * FROM records
将您的代码更改为此(见下文)。
$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++;
}