2013-02-15 98 views
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. H嗷嗷做我检索结果从存储过程返回设定的到PHP 功能。

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

我检查了谷歌和我看到创建一个存储过程,我需要像这样开头:

CREATE PROCEDURE `getResults` (IN userid INT) 
BEGIN 

END 

回答

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(); 

在一个侧面说明,我会建议ommend明确地命名您的区域,而不是在你的查询中使用*选择。

希望它有帮助, S.