簡體   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