首页 > 解决方案 > 如何在 SQL 的存储过程中获取 select 语句返回的内容

问题描述

我有一个执行“插入”然后执行“选择”的存储过程。我已经使用所有 fetch 来获取选择的值,但它们不起作用。

PHP 代码

示例.php

<?php
    /////////CALLING CONTROLLER (using require_once)///////////
    $controller = new Controller();
    $exam = $controller->getExample();
    $exam2 = $controller->getExample2('a');
?>

<label for="exam1">Example 1</label>
<input type="text" name="exam1" id="exam1" value="<?php echo $exam[0]["texto"] ?>" style="width: 300px">
<br>
<label for="exam2">Example 2</label>
<input type="text" name="exam2" id="exam2" value="<?php echo $exam2[0]["texto"] ?>" style="width: 300px">

控制器.php

<?php
    
    class Controller {
           
          public function getExample(){
            /////////////CREATING 'CONNECTION' TO CONNECT WITH MODEL//////////////
            $querySQL = "EXEC [dbo].[example]";
            $execQuery=$connection->prepare($querySQL);
            $execQuery->execute();
            return $execQuery->fetchAll(PDO::FETCH_ASSOC);
        }


        public function getExample2($name){
            /////////////CREATING 'CONNECTION' TO CONNECT WITH MODEL//////////////
            $querySQL = "EXEC [dbo].[example2] ?";
            $execQuery=$connection->prepare($querySQL);
            $execQuery->bindValue(1, $name);
            $execQuery->execute();
            return $execQuery->fetchAll(PDO::FETCH_ASSOC);
        }

    }

SQL 服务器

CREATE PROCEDURE example
AS
SELECT 'whatever' as texto;

CREATE PROCEDURE example2
@name [nvarchar](40)
AS
INSERT INTO prueba
           ([name])
     VALUES
           (@name)
SELECT 'whatever2' as texto;

我认为我的错误在于 PHP 的代码。我的查询运行良好,关于第二个过程(example2),这成功插入了一个新寄存器('a')但是当我尝试调用'texto'时返回我: 注意:未定义的偏移量:C:\xampp\htdocs 中的 0.. .,与第一个不同(示例返回“随便”)。请帮忙,我不知道如何在第二个过程中获取 texto 的值

结果图片

而且......我真的向那些在我之前的帖子中看到这个问题作为答案的人道歉,我不知道我做错了什么

标签: phpsql-serverpdo

解决方案


推荐阅读