我从未使用过存储过程,但当我需要将查询移动到服务器时,我遇到了现实。请协助。
这是我通过 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;
}
我从未使用过存储过程,也不确定如何处理:
- 如何将此作为存储过程添加到 MySQL,以便我可以提交 一个整数变量给它
- 如何“准备”要提交给存储过程的整数变量
- 如何将存储过程中的结果集检索回 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/