我想调用mysql存储过程中的两个参数说from和to并打印表中的数据。我使用了以下代码:
while ( $report = $records->fetch() )
后来我像以前一样使用while循环打印表数据。
select * from employee where age in between 30 and 40;
存储例程proc_report_filtered是一个简单的查询,用于获取年龄范围之间的数据,如下所示:
e.dataTransfer.setDragImage
其中30是$ age_from,40是$ age_to传递给存储例程。
不幸的是代码不起作用。请纠正我出错的地方。我是新手使用php PDO。
答案 0 :(得分:1)
通常,使用PDO调用存储过程没有什么特别之处。 The only issue可能只影响跟随查询,但不会影响当前查询。
因此,您的问题与存储过程无关,而只与基本的PDO语法有关:您使用错误的代码来获取记录。这是正确的一个
$stmt->execute();
$records = $stmt->fetchAll(PDO::FETCH_ASSOC);
如果不是问题而是复制/粘贴问题,并且为了帮助更多访问者,这里是PDO调试的简短检查列表:
第2步。确保您可以看到所有PHP错误。
error_reporting(E_ALL);
ini_set('display_errors', 1); // for the dev server only
第3步。通过添加此代码,确保您的PDO抛出异常
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
第4步。使用PDO::query()
运行查询而不使用预先准备好的语句,并使用手写的值:
$stmt = $db->query("CALL proc_report_filtered(30,40)");
第5步。使用预先准备好的声明但以简化形式运行,以消除所有可能的拼写问题:
$stmt = $db->prepare("CALL proc_report_filtered(?,?)");
$stmt->execute(array($_POST['from'],$_POST['to']));