Код: Выделить всё
$ca=$db->query('SELECT * FROM `clients`');
while ($c=$ca->fetch_assoc())
{
try {
$mysqli->query('ALTER TABLE `client_'.$c['id'].'_data` ADD COLUMN `updated` datetime DEFAULT NULL');
}catch (Exception $e) {
// handling/ignoring the exception
}
}
Поэтому, когда в одной из таблиц уже есть этот столбец, я получаю исключение как и ожидалось, что я затем игнорирую. Но когда я игнорирую эту ошибку в строке 4 - после возникновения исключения - когда цикл пытается выполнить следующий $c=$ca->fetch_assoc - скрипт вылетает с тем же исключением
Я получаю что-то подобное
Код: Выделить всё
Fatal error: Uncaught mysqli_sql_exception: Duplicate column .....
Stack trace:
#0 /home/api/www/test.php(2): mysqli_result->fetch_assoc()
#1 {main} thrown in /home/api/www/test.php on line 2
Конечно, я могу запретить использование fetch_assoc в цикле, но не хочу, потому что во многих случаях у меня есть такие конструкции и я не хочу использовать большие массивы для хранения в них всех результатов .
Почему это происходит и что я могу сделать, чтобы это исправить?
Подробнее здесь: https://stackoverflow.com/questions/784 ... ested-loop
Мобильная версия