我有幾個關於存儲過程的問題。經過數小時的搜索,我真的找不到任何非常簡單的查詢示例。MySQL存儲過程
CREATE PROCEDURE test1(IN uid INT)
BEGIN
SELECT USER_NAME FROM USERS WHERE USER_ID = uid;
END //
此查詢時間爲「uid」作爲輸入,並選擇用戶名該uid, 是否有人可以解釋我是如何調用該程序在PHP和也,我怎麼輸出的實際行到PHP的變種?
我有幾個關於存儲過程的問題。經過數小時的搜索,我真的找不到任何非常簡單的查詢示例。MySQL存儲過程
CREATE PROCEDURE test1(IN uid INT)
BEGIN
SELECT USER_NAME FROM USERS WHERE USER_ID = uid;
END //
此查詢時間爲「uid」作爲輸入,並選擇用戶名該uid, 是否有人可以解釋我是如何調用該程序在PHP和也,我怎麼輸出的實際行到PHP的變種?
您應該考慮與存儲的函數,它返回一個VARCHAR這樣做:
CREATE FUNCTION test1(uid INT) RETURNS VARCHAR(100)
BEGIN
DECLARE V_RETURN_VAL VARCHAR(100);
SELECT USER_NAME
INTO V_RETURN_VAL
FROM USERS
WHERE USER_ID = uid;
RETURN V_RETURN_VAL;
END //
據我所知,你只需要把調用之前它在查詢:
$result = mysql_query("CALL test1(".$args.")");
$username = mysql_result($result);
但是,我不必在過程中定義一個'OUT'var來獲取選定的行到php var嗎? – 2010-08-18 11:47:00
你可以只使用「CALL」並檢索行,就像它是一個普通查詢一樣。
唯一不同的情況是如果過程返回多個結果集,在這種情況下,您必須通過一個給出下一個結果集的方法遍歷它們(甚至是空的)。
OUT參數浪費時間,因爲它們需要更多往返和服務器端狀態來獲取其結果;如果你使用它們,你總會寫更多的代碼並且會有更多的錯誤。
使用什麼數據庫接口?庫MySQLi? PDO?還有別的嗎? – 2010-08-18 11:46:46
我已經使用phpmyadmin插入存儲過程,但我試圖通過php執行 – 2010-08-18 11:54:06