php - 进入存储过程,需要帮助转换查询

标签 php mysql stored-procedures

我从未使用过存储过程,但当我需要将查询移动到服务器时,我遇到了现实。请协助。

这是我通过 PHP 创建的函数:

function getResults($userid) {
        $query = "select * from myTable where iduser= ?";
        $stmt = $this->openDb()->prepare($query);
        $stmt->bindValue(1, $userid, PDO::PARAM_INT);
        $stmt->execute();
        $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
        return $rows;
    }

我从未使用过存储过程,也不确定如何处理:

  1. 如何将此作为存储过程添加到 MySQL,以便我可以提交 一个整数变量给它
  2. 如何“准备”要提交给存储过程的整数变量
  3. 如何将存储过程中的结果集检索回 php 功能。

如果您能提供帮助,我会审核您的解决方案,并能够自行继续。

我查了谷歌,我发现要创建一个存储过程,我需要这样开始:

CREATE PROCEDURE `getResults` (IN userid INT)  
BEGIN  

END

最佳答案

MySQL:

DELIMITER $$

DROP PROCEDURE IF EXISTS getResults$$

CREATE PROCEDURE getResults(IN I_USERID INT(10))
BEGIN
    SELECT * FROM `myTable` WHERE iduser = I_USERID;
END$$

DELIMITER ;

PHP:

$sql = "CALL getResults(?)";
$stmt = $this->openDb()->prepare($sql);
$stmt->execute(array($userid));

while ($row = $stmt->fetchObject()) {
    //use fields like this: $row->fieldname1, $row->fieldname2...
}
$stmt->closeCursor();

附带说明一下,我建议明确命名您的字段,而不是在查询中使用 * 选择器。

希望对你有帮助 S.

关于php - 进入存储过程,需要帮助转换查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14904416/

相关文章:

php - 在PHP中创建表不起作用

php - 如何在 Laravel 中检索当前日期的数据

php - 多个用户插入记录

PostgreSQL 套接字连接

PHP PDO FetchAll() 混淆

PHP try-catch 不工作

c++ - 当更新发生时如何使用 lib_mysqludf_sys 执行外部程序?

java - Getting WARN : SQL Error: 1205, SQLState : 41000 ERROR: Lock wait timeout exceeded; try restarting transaction. 使用hibernate保存记录

mysql - 存储过程函数中的动态表名

stored-procedures - Entity Framework 4 函数导入不起作用