Оператор вставки mysql внутри оператора while добавляет только 1 запись

У меня есть этот код (см. Ниже)

$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 «. Теперь проблема в том, что он добавляет только одну запись в резервную копию (запись, которая была извлечена первой), которая предположительно должна добавить все извлеченные записи из таблицы базы данных с именем records в таблицу базы данных с именем backup. Зачем?? Любые предложения, рекомендации, подсказки и идеи будут с благодарностью. Спасибо!

PS: это как экспорт и импорт в другую таблицу с такой же структурой, но у меня есть своя собственная причина, почему я хочу сделать это таким образом и предположить, что я уже успешно подключился к базе данных ($ this-> db), называемой «инвентаризация», и есть там имя таблицы БД, например «records» и «backupp» с одинаковой структурой.

0

Решение

И вы можете легко сделать резервную копию этой таблицы следующим образом: INSERT INTO backupp SELECT * FROM records

6

Другие решения

У вас есть оператор return внутри цикла while, который вызывает выход после одной итерации.

Удалить return $result; линия и она должна работать.

3

измените свой код на это (см. ниже).

$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++;
}
0
По вопросам рекламы [email protected]