2013-02-15 92 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.