gpt4 book ai didi

php - 多个sql查询运行问题

转载 作者:行者123 更新时间:2023-11-29 10:51:52 24 4
gpt4 key购买 nike

我对 PHP 还很陌生,我当前的问题是必须在同一页面上运行 sql 查询。

我在同一页面上有两个不同的 div。一个 div 显示存储过程中的所有笑话,另一个 div 显示作者的简单选择。

我从这个错误消息中得到了什么:

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.' in /usr/local/pem/vhosts/272348/webspace/httpdocs/icloudis.com/sohail/crud_cssgrids/aeroplane.php:18 Stack trace: #0 /usr/local/pem/vhosts/272348/webspace/httpdocs/icloudis.com/sohail/crud_cssgrids/aeroplane.php(18): PDO->query('select * from p...') #1 {main} thrown in /usr/local/pem/vhosts/272348/webspace/httpdocs/icloudis.com/sohail/crud_cssgrids/aeroplane.php on line 18

我从这条消息中了解到我不能同时进行多个无缓冲的查询?所以,我需要使用 fetchAll 或有

setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);

还可以使用 closeCursor()。我不明白的是如何使用所有这些来使其发挥作用。

这是我的配置文件:

try {


$pdo = new PDO('mysql:host=xx.xxx.xxx.xx; dbname=xxxxxxx', 'xxxx', 'xxxxxx');
$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);
} catch (PDOException $e) {

echo 'Connection failed: ' . $e->getMessage();

die();

}

我想要查询的页面,我没有尝试在这里输出第二个查询的结果,但当前的代码是:

 <?php
//including the database connection file
//include_once("config_local.php");
include_once("config.php");

session_start();
if(empty($_SESSION['email']))
{
header("location:index.php");
}

echo "Welcome ".$_SESSION['name'];



$result = $pdo->query("call aeroplane");
$result->closeCursor();
$result1 = $pdo->query("select * from plane_maker");
$result1->closeCursor();

?>
<!DOCTYPE html>

<html>
<head>
<meta charset="UTF-8">
<title>Aeroplanes</title>
<link rel="stylesheet" href="css/styles.css">
</head>
<body>
<section class="grid-1">
<div class="item-1">1</div>

<div class="item-2">
<div class="item-5">
<a href="add_form.php">Add New Aeroplane</a> &nbsp; | &nbsp;
<a href="aeroplane_maker.php">Add New aeroplane maker</a>
<br/><br/>

<table width='80%' border=0>

<tr bgcolor='#CCCCCC'>
<td>Maker Name</td>
<td>Aeroplane</td>
<td>Top speed</td>
<td>Range</td>
<td>Update</td>
</tr>
<?php

while($row = $result->fetchAll()) {
echo "<tr>";
echo "<td>".$row['planeMakerName']."</td>";
echo "<td>".$row['aeroplaneName']."</td>";
echo "<td>".$row['aeroplaneTopSpeed']."</td>";
echo "<td>".$row['aeroplaneRange']."</td>";
echo "<td><a href=\"edit.php?id=$row[aeroplaneID]\">Edit</a> | <a href=\"delete.php?id=$row[aeroplaneID]\" onClick=\"return confirm('Are you sure you want to delete?')\">Delete</a></td>";
}

?>
<a href="logout.php">Logout</a>
</table>
</div>
<div class="item-6">6</div>
<div class="item-7">7</div>
</div>

<div class="item-3">3</div>
<div class="item-4">4</div>
</section>
</body>
</html>

-谢谢

最佳答案

您发布的代码不是真实的代码。这使得代码和错误彼此无关,进而导致无法回答。

您应该始终发布导致错误的确切代码。

无论如何,为了使您的代码正常工作,您应该在关闭游标之前获取数据。因为关闭后显然将没有数据可供获取。

$result = $pdo->query("call aeroplane")->fetchAll();
$result->closeCursor();
$result1 = $pdo->query("select * from plane_maker")->fetchAll();

该错误与缓冲查询无关,而是与 stored procedures' behavior 有关。 .

关于php - 多个sql查询运行问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43586756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com