一千萬個為什麽

搜索

存儲過程的替代方案

我在使用存儲過程時遇到問題。調用存儲過程對我不起作用。所以我用sql語句替換了存儲過程。但現在,我有一些接收參數的存儲過程。例如

CREATE PROCEDURE get_category_details_proc(IN incat_id INT)
BEGIN 

SELECT name, desc 
FROM category
WHERE cat_id = incat_id;

END

如何使用簡單的sql語句替換它?

有關詳細信息,請參閱我之前的問題

我已經在我的數據庫連接類中使用了這個函數:

public static function GetRow($sqlQuery, $params = null, $fetchStyle = PDO::FETCH_ASSOC)
 {
  $result = null;
  try
  {
   $database_handler = self::GetHandler();
   $statement_handler = $database_handler->prepare($sqlQuery);
   $statement_handler->execute($params);
   $result = $statement_handler->fetch($fetchStyle);

  }
  catch(PDOException $e)
  {
   self::Close();
   trigger_error($e->getMessage(), E_USER_ERROR);

  }
  return $result;


 }

在另一個我實際調用存儲過程的類中:

public static function GetCategoryDetails($categoryID)
 {
  $sql = CALL get_category_details_proc(:category_id);
              $params = array(':category_id' => $categoryID);
  return DatabaseHandler::GetRow($sql,$params);

 }

最佳答案

使用如下所示的Prepared語句:

$pdo = new PDO(...);
$statement = $pdo->prepare('SELECT name, desc FROM category WHERE cat_id = ?');
$statement->execute(array(10));//incat_id
$rows = $statement->fetchAll();

轉載註明原文: 存儲過程的替代方案