我从未使用过存储过程,但是当我需要将查询移动到服务器时,我遇到了一个现实。请协助。
这是我通过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;
}
我从未使用存储过程而不确定如何处理:
如果您可以提供帮助,我会审核您的解决方案,并且可以自行继续。
我检查了谷歌,我看到要创建一个存储过程,我需要像这样开始:
CREATE PROCEDURE `getResults` (IN userid INT)
BEGIN
END
答案 0 :(得分: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上。