Проблемы при циклическом просмотре базы данных в php

#php

#php

Вопрос:

Пытаюсь выполнить цикл по базе данных и вставить записи в другую таблицу, но у меня возникает ошибка

//Предупреждение: count(): Параметр должен быть массивом или объектом, который реализует Countable

похоже, что проблема вызвана этой строкой кода

 for ($i=1; $i<=count($id); $i  ) {
  

Вот мои усилия на данный момент

 include('pdo.php');
$result= $db->prepare("SELECT * FROM users");
$result->execute(array());

while ($row = $result->fetch()){
echo $id= $row['id'];
echo $fullname = $row['fullname'];


$j=0;

for ($i=1; $i<=count($id); $i  ) {
//foreach($id as $id1){ 


$statement = $db->prepare('INSERT INTO members (mid,fullname) values(:mid,:fullname)');
$statement->execute(array( 
            ':mid' => $id,
                ':fullname' => $fullname,
    
));


    $j  ;




}

}
  

Ответ №1:

Вы должны принять значение $ row (поскольку оно представляет ваш массив), вы выполняете итерацию по значению $ id, которое выдаст вам ошибку, поскольку «Параметр должен быть массивом или объектом, который реализует Countable»

Хотя для вашей проблемы доступно лучшее решение следующим образом,

  INSERT INTO members ( 
      mid,fullname ) 
SELECT id, 
       fullname
FROM users
ORDER BY id ASC
  

Ответ №2:

Устранены с помощью метода fetchAll()

 $result= $db->prepare("SELECT * FROM users");
$result->execute(array());
$rows = $result->fetchAll();
foreach($rows as $row)  
                        {   

$name = $row['fullname'];
$st = $db->prepare('INSERT INTO members (fullname) values (:fullname)');
$st->execute(array( ':fullname' => $name));


}