mysqli_stmt_execute()错误:execute()恰好需要0个参数,给定1个

时间:2018-10-19 16:03:41

标签: php mysql mysqli prepared-statement

我正在尝试使用Prepared Statements方法将html表单中的数据保存到数据库wordpresswp_testdb中。但是我在第mysqli_stmt_execute();行出现了错误

  

警告:mysqli_stmt_execute()恰好期望1个参数,其中0给出   这是我的代码:

if(isset($_POST['BtnSubmit'])){
    include_once 'dbConnection.php';

    if($conn -> connect_error) {
        die("connection failed:".$conn-> connect_error);
    }

    $date           = $_POST['date'];   
    $select_bank    = $_POST['select_bank'];
    $entry_type     = $_POST['entry_type'];
    $income_cat     = $_POST['income_cat'];
    $amount         = $_POST['amount'];


    $sql = "INSERT INTO wp_testdb (data_one, data_two, data_three, data_four, data_five) VALUES (?, ?, ?, ?, ?);";

    $stmt = mysqli_stmt_init($conn);

    if (!mysqli_stmt_prepare($stmt,$sql)) {
            echo "SQL Error !!";
    } else {
        mysqli_stmt_bind_param($stmt, "sssss", $date, $select_bank, $entry_type, $income_cat, $amount);
        mysqli_stmt_execute();
    }
}

dbConnection.php具有以下数据:

<?php

$dbServername = "localhost";    
$dbUsername = "root";
$dbPassword = "";
$dbName = "wordpress";

$conn= mysqli_connect($dbServername, $dbUsername, $dbPassword, $dbName);

我是php和mysql的新手。有什么建议可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我将建议使用面向对象的接口而不是程序。两者都可以工作-但是,所有程序功能都需要将连接或语句对象作为第一个参数。

根据documentation,您需要将语句对象(在您的情况下为$stmt)作为参数传递。

mysqli_stmt_execute($stmt);

此函数返回一个布尔值,您可以检查查询是否成功。

if (!mysqli_stmt_prepare($stmt,$sql)) {
        echo "SQL Error !!";
        error_log(mysqli_error($conn));
} else {
    mysqli_stmt_bind_param($stmt, "sssss", $date, $select_bank, $entry_type, $income_cat, $amount);
    if (mysqli_stmt_execute($stmt)) {
        // Query succeeded!
        // Do something
    } else {
        // Query failed. Log it, and do something?
        error_log(mysqli_stmt_error($stmt));
    }
}