php准备好的语句插入不起作用

时间:2018-03-08 15:51:07

标签: php mysqli prepared-statement

我在线研究了很多,并花了很多时间来解决这个问题。 我的代码

    function createNewAccount() {

        global $response;
        global $conn;

        // prepare and bind
        $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
        $stmt->bind_param("sss", $firstname, $lastname, $email);

        // set parameters and execute
        $firstname = "John";
        $lastname = "Doe";
        $email = "john@example.com";
        $stmt->execute();

}

我得到的错误是

  

警告:mysqli :: prepare():无法获取mysqli   第105行的C:\ xampp \ htdocs \ authentication \ register.php

     

致命错误:未捕获错误:调用成员函数bind_param()   C:\ xampp \ htdocs \ authentication \ register.php中的null:106堆栈跟踪:    #0 C:\ xampp \ htdocs \ authentication \ register.php(139):createNewAccount()#1 {main}引入   第106行的C:\ xampp \ htdocs \ authentication \ register.php

我似乎无法找到任何解决方案。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:-2)

在使用之前需要设置PHP变量:

function createNewAccount() {

    global $response;   // If you dont need this remove it
    global $conn;

   // set parameters and execute
    $firstname = "John";
    $lastname = "Doe";
    $email = "john@example.com";

    // prepare and bind
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
    $stmt->bind_param("sss", $firstname, $lastname, $email);      
    $stmt->execute();

}