繁体   English   中英

通过PHP调用MySQL存储过程

[英]Calling MySQL Stored Procedure via PHP

我刚开始编写MySQL存储过程,但遇到了一些问题。

这是存储过程:

DELIMITER $$

DROP PROCEDURE IF EXISTS login$$

CREATE PROCEDURE login(
    IN usern VARCHAR(11),
    IN pw VARCHAR(30),
    OUT msg VARCHAR(50)
)
login_proc:
BEGIN
    SELECT COUNT(*) as voter
    FROM regVoter 
    WHERE studentID = usern AND password = pw;

    IF voter = 1 THEN
        SET msg = "login successfully";
    ELSE
        SET msg = "login failed";
    END IF;

    LEAVE login_proc;
END $$

DELIMITER ;

以下是将在其中调用存储过程的PHP文件:

<?php 
    ini_set('display_errors','1'); error_reporting(E_ALL);
    include_once 'dbConnect.php';

    $username = $_POST['username'];
    $password = $_POST['password'];

    if (connect()){
        global $conn;

        $query = $conn->query("CALL login('$username','$password',@msg)") or die("Query failed: " . $conn->error);

        $result = $conn->query("SELECT @msg AS data");
        $row = $result->fetch_assoc();
        echo $row['data'];
    }
    else{
         $data = "connection error!";
    }   
?>

我得到的错误是“未捕获的错误:在布尔值上调用成员函数fetch_assoc()”,这意味着查询之一返回false。

我在这里做错了什么?

我在这篇文章中发现了同样的问题

在<path>中的布尔值上调用成员函数fetch_assoc()

我希望这将帮助您解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM