PHP/MySQL 存储过程问题

标签 php mysql stored-procedures

我正在尝试使用存储过程添加到我的 SQL 数据库,此过程应添加 unique_id、名称、密码和电子邮件地址。

我正在使用以下代码:

    //Enter the valid data into the database
    $username = filter_input(INPUT_POST, 'Username', FILTER_SANITIZE_STRING);
    $encrypted_password = filter_input(INPUT_POST, 'Password', FILTER_SANITIZE_STRING);
    $email = filter_input(INPUT_POST, 'Email', FILTER_SANITIZE_STRING);
    $uuid = uniqid('', true);

    $insertUser = mysqli_query($conn, "Call userInsert('$uuid', '$username','$encrypted_password', '$email')"); 

        if(! $insertUser )
        {
            die('Error: ' . $conn->error);
        }

        else
        {
            echo "Success";
        }

这是我的存储过程:

$insertIntoUsers = "
CREATE PROCEDURE userInsert(unique_id VARCHAR(23), name VARCHAR(50), encrypted_password VARCHAR(80), email VARCHAR(50))
BEGIN
INSERT INTO users(unique_id, name, encrypted_password,email) values(unique_id, name,encrypted_password,email);
END";

我希望它占用四个字段,但当我尝试注册时出现以下错误

Error: Incorrect number of arguments for PROCEDURE users.userInsert; expected 3, got 4

谁知道这是什么原因造成的?说它只需要三个参数,但我指定了四个?

最佳答案

成功排序

我之前存储了带有 3 个参数的相同过程,当我添加第四个参数时,它从未更新,所以我首先使用以下方法删除了该过程:

drop procedure users.userInsert;

再次运行程序,然后一切正常

关于PHP/MySQL 存储过程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29416399/

相关文章:

c# - Entity Framework 日期时间错误中的存储过程

MySQL - 重用嵌套的选择语句

php - 使用 PHP/Apache 根据 DB 值控制对文件的访问

mysql - 表被标记为崩溃,应该修复

php - 如何在提交时下载在 PHP 中同时创建的文件?

python - 运行docker django容器时无法连接到服务器

PHP if 语句 : use "OR" or ||?

php - 自定义帖子类型的日期存档

php - 如何在所有 View 中共享一个变量?

linq-to-sql - LINQ To SQL 可以与使用 sp_executeSQL 的存储过程一起使用吗?如果没有,你如何处理?