#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));
}