Php MySQL存储过程

Php MySQL存储过程,php,mysql,stored-procedures,Php,Mysql,Stored Procedures,我有几个关于存储过程的问题。经过几个小时的谷歌搜索,我真的找不到任何真正简单的查询示例 CREATE PROCEDURE test1(IN uid INT) BEGIN SELECT USER_NAME FROM USERS WHERE USER_ID = uid; END // 此查询将“uid”作为输入,并选择该uid的用户名, 有人能解释一下我如何在php中调用该过程,以及如何将实际行输出到php变量吗?好的,您只需要在查询中将调用放在前面: $result = mysql_qu

我有几个关于存储过程的问题。经过几个小时的谷歌搜索,我真的找不到任何真正简单的查询示例

CREATE PROCEDURE test1(IN uid INT)
BEGIN
    SELECT USER_NAME FROM USERS WHERE USER_ID = uid;
END //
此查询将“uid”作为输入,并选择该uid的用户名,
有人能解释一下我如何在php中调用该过程,以及如何将实际行输出到php变量吗?

好的,您只需要在查询中将调用放在前面:

$result = mysql_query("CALL test1(".$args.")");
$username = mysql_result($result);

您应该考虑用一个存储函数返回一个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 //
您只需使用“CALL”并检索行,就像它是一个普通查询一样

唯一不同的情况是如果过程返回多个结果集,在这种情况下,您必须使用一个给出下一个结果集的方法遍历所有结果集(甚至是空的结果集)


OUT参数是浪费时间,因为它们需要更多的往返和服务器端状态来获取结果;如果您使用它们,您总是会编写更多的代码,并且会有更多的bug。

使用什么数据库接口?mysqli?PDO?还有什么吗?我已经使用phpmyadmin插入了存储过程,但是我正在尝试通过phpBut执行,但是我不需要在过程中定义一个'OUT'变量,以便将所选行添加到php变量吗?