给定以下代码:
// 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
}
我显然尝试准备语句以从 table2 中选择所有内容两次。第二个(WHILE 循环中的那个)总是失败并导致错误。
这仅在我的生产服务器上,在本地开发我没有问题,所以它必须是某处的某种设置。
我的直接想法是 MySQL 有某种 max_connections 设置被设置为 1 并且连接保持打开直到 WHILE 循环完成所以当我尝试准备一个新查询时它说“没有太多连接已经”并且大便.
有任何想法吗?
编辑:是的,我知道没有必要做两次,在我的实际代码中,它只在 WHILE 循环中准备好,但就像我说的那样,在我的生产服务器上失败了,所以经过一些测试,我发现一个简单的 SELECT * 查询失败了WHILE 循环,但没有退出它。我给出的示例代码显然被淡化了,只是为了说明这个问题。