2

我从未使用过存储过程,但是当我需要将查询移至服务器时,我面临着现实。请协助。

这是我通过 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
4

1 回答 1

1

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。

于 2013-02-15T23:24:24.310 回答