gpt4 book ai didi

php - 从 PHP 调用 MySql 存储过程 (PDO)

转载 作者:行者123 更新时间:2023-11-30 00:03:44 25 4
gpt4 key购买 nike

我正在尝试使用 PDO 连接执行 MySQL 存储过程,我几乎尝试了所有方法,但无法执行它。

SP 只会插入和更新。以下是我到目前为止尝试过的代码。

$config = require('protected/config/main.php');
try
{
$db_adat = new PDO($config['components']['db']['connectionString'], $config['components'] ['db']['username'], $config['components']['db']['password']);
$result= $db_adat->prepare('CALL pdv()');

$a = $result->execute();
$a->fetchAll(PDO::FETCH_ASSOC);

我尝试仅使用 fetch()、仅使用 fetchAll()、fetchObject()、使用 fetch(PDO::FETCH_ASSOC)、使用 fetchAll(\PDO::FETCH_ASSOC),但我总是收到以下错误

Fatal error: Call to a member function fetchAll() on a non-object in D:\ADAT_System\www\test\protected\controllers\ExportPDVController.php on line 35

我还尝试使用query()而不是execute(),但这也不起作用。

我还尝试在 SP 中添加 (select * ) 语句,并尝试使用上述所有“fetch”选项,但遇到了相同的错误。

SP 需要 7 分钟才能完成,但所有内容都立即出错,所以我猜测它从未运行过 SP。

我也尝试过如下

$result= $this->$db_adat->prepare("CALL pdv()");
$result->execute();

但是我收到以下错误:

Object of class PDO could not be converted to string 

我没有在 SP 中传递任何参数,只是一个简单的调用。如果需要更多信息,请告诉我。

最佳答案

这部分代码是错误的

$result= $db_adat->prepare('CALL pdv()');
$a = $result->execute();
$a->fetchAll(PDO::FETCH_ASSOC);

因为 execute() 在成功或失败时返回一个 bool 值。

您不能使用它来获取。这是具有适当变量名称的正确方法:

$stmt= $db_adat->prepare('CALL pdv()');
$success = $stmt->execute();
if($success){
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
}else{
echo 'failed to run sp';
}

关于php - 从 PHP 调用 MySql 存储过程 (PDO),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24786290/

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