С учетом следующего кода:
// Connect to MySQL up here
$example_query = $database->prepare('SELECT * FROM table2');
if ($example_query === false) die('prepare failed');
$query = $database->prepare('SELECT * FROM table1');
$query->execute();
while ($results = $query->fetch())
{
$example_query = $database->prepare('SELECT * FROM table2');
if ($example_query === false) die('prepare failed'); //it will die here
}
Я, очевидно, пытаюсь подготовить операторы для SELET все из таблицы 2 дважды. Второй (тот, что в цикле WHILE) всегда дает сбой и вызывает ошибку.
Это только на моем производственном сервере, локально развиваясь, у меня нет проблем, поэтому это должно быть где-то какая-то настройка.
Я сразу подумал, что в MySQL есть какая-то настройка max_connections, которая установлена в 1, и соединение остается открытым до завершения цикла WHILE, поэтому, когда я пытаюсь подготовить новый запрос, он говорит: «Нет, слишком много подключено уже» и гадит.
Есть идеи?
РЕДАКТИРОВАТЬ: Да, я знаю, что нет необходимости делать это дважды, в моем реальном коде он готовится только в цикле WHILE, но, как я уже говорил, это не работает на моем рабочем сервере, поэтому после некоторого тестирования я обнаружил, что простой запрос SELECT * не выполняется в цикле WHILE, но не выходит из него. Код примера, который я привел, очевидно, очень упрощен, чтобы проиллюстрировать проблему.