修复mysql错误mysqli_stmt_bind_param()


fixing mysql errors mysqli_stmt_bind_param()

我已经创建了一个表格,以便学生可以输入他们的信息。学生输入的所有数据将存储在MYSQL数据库中。但是,当在表单字段中输入数据后单击提交按钮时,屏幕上会显示一些错误消息。以下是错误信息:

警告:mysqli_stmt_bind_param()期望参数1为mysqli_stmt,布尔值在C:'xampp'htdocs'MYSQL' studentadding .php第317行

警告:mysqli_stmt_execute()期望参数1为mysqli_stmt,布尔值在C:'xampp'htdocs'MYSQL' studentadding .php第327行

警告:mysqli_stmt_affected_rows()期望参数1为mysqli_stmt,布尔值在C:'xampp'htdocs'MYSQL'studentadded.php中331行给出错误发生

警告:mysqli_error()期望在C:'xampp'htdocs'MYSQL' studentadding .php 357行中给出1个参数,0

警告:mysqli_stmt_close()期望参数1为mysqli_stmt,布尔值在C:'xampp'htdocs'MYSQL' studentadding .php第361行

这是代码:

<!DOCTYPE html>
    <html>
    <head>
    <title>Add Student</title>
    </head>
    <body>
    <?php

    if(isset($_POST['submit'])){

        $data_missing = array();

        if(empty($_POST['first_name'])){

            // Adds name to array
            $data_missing[] = 'First Name';

        } else {

            // Trim white space from the name and store the name
            $f_name = trim($_POST['first_name']);

        }

        if(empty($_POST['last_name'])){

            // Adds name to array
            $data_missing[] = 'Last Name';

        } else{

            // Trim white space from the name and store the name
            $l_name = trim($_POST['last_name']);

        }

        if(empty($_POST['email'])){

            // Adds name to array
            $data_missing[] = 'Email';

        } else {

            // Trim white space from the name and store the name
            $email = trim($_POST['email']);

        }

        if(empty($_POST['street'])){

            // Adds name to array
            $data_missing[] = 'Street';

        } else {

            // Trim white space from the name and store the name
            $street = trim($_POST['street']);

        }

        if(empty($_POST['city'])){

            // Adds name to array
            $data_missing[] = 'City';

        } else {

            // Trim white space from the name and store the name
            $city = trim($_POST['city']);

        }

        if(empty($_POST['state'])){

            // Adds name to array
            $data_missing[] = 'State';

        } else {

            // Trim white space from the name and store the name
            $state = trim($_POST['state']);

        }

        if(empty($_POST['zip'])){

            // Adds name to array
            $data_missing[] = 'Zip Code';

        } else {

            // Trim white space from the name and store the name
            $zip = trim($_POST['zip']);

        }

        if(empty($_POST['phone'])){

            // Adds name to array
            $data_missing[] = 'Phone Number';

        } else {

            // Trim white space from the name and store the name
            $phone = trim($_POST['phone']);

        }

        if(empty($_POST['birth_date'])){

            // Adds name to array
            $data_missing[] = 'Birth Date';

        } else {

            // Trim white space from the name and store the name
            $b_date = trim($_POST['birth_date']);

        }

        if(empty($_POST['sex'])){

            // Adds name to array
            $data_missing[] = 'Sex';

        } else {

            // Trim white space from the name and store the name
            $sex = trim($_POST['sex']);

        }

        if(empty($_POST['lunch'])){

            // Adds name to array
            $data_missing[] = 'Lunch Cost';

        } else {

            // Trim white space from the name and store the name
            $lunch = trim($_POST['lunch']);

        }

        if(empty($data_missing)){

            require_once('mysqli_connect.php');

            $query = "INSERT INTO students (first_name, last_name, email,
            street, city, state, zip, phone, birth_date, sex, date_entered,
            lunch_cost, student_id) VALUES (?, ?, ?,
            ?, ?, ?, ?, ?, ?, ?, NOW(), ?, NULL)";

            $stmt = mysqli_prepare($dbc, $query);

            /*i Integers
            d Doubles
            b Blobs
            s Everything Else */

            //below is line 317 where the error is happening
            mysqli_stmt_bind_param($stmt, "ssssssisssd", $f_name,
                                   $l_name, $email, $street, $city,
                                   $state, $zip, $phone, $b_date,
                                   $sex, $lunch);

            //below is line 327 where the error is happening
            mysqli_stmt_execute($stmt);

             //below is line 331 where the error is happening
            $affected_rows = mysqli_stmt_affected_rows($stmt);

            if($affected_rows == 1){

                echo 'Student Entered';

                mysqli_stmt_close($stmt);

                mysqli_close($dbc);

            } else {

                echo 'Error Occurred<br />';
                //below is line 357 where the error is happening
                echo mysqli_error();

                //below is line 361 where the error is happening
                mysqli_stmt_close($stmt);

                mysqli_close($dbc);

            }

        } else {

            echo 'You need to enter the following data<br />';

            foreach($data_missing as $missing){

                echo "$missing<br />";

            }

        }

    }

    ?>

    <form action="http://localhost/studentadded.php" method="post">

        <b>Add a New Student</b>

        <p>First Name:
    <input type="text" name="first_name" size="30" value="" />
    </p>

    <p>Last Name:
    <input type="text" name="last_name" size="30" value="" />
    </p>

    <p>Email:
    <input type="text" name="email" size="30" value="" />
    </p>

    <p>Street:
    <input type="text" name="street" size="30" value="" />
    </p>

    <p>City:
    <input type="text" name="city" size="30" value="" />
    </p>

    <p>State (2 Characters):
    <input type="text" name="state" size="30" maxlength="2" value="" />
    </p>

    <p>Zip Code:
    <input type="text" name="zip" size="30" maxlength="5" value="" />
    </p>

    <p>Phone Number:
    <input type="text" name="phone" size="30" value="" />
    </p>

    <p>Birth Date (YYYY-MM-DD):
    <input type="text" name="birth_date" size="30" value="" />
    </p>

    <p>Sex (M or F):
    <input type="text" name="sex" size="30" maxlength="1" value="" />
    </p>

    <p>Lunch Cost:
    <input type="text" name="lunch" size="30" value="" />
    </p>

    <p>
        <input type="submit" name="submit" value="Send" />
    </p>

    </form>
    </body>
    </html>

我想你的连接文件mysqli_connect.php可能有问题

这是我的代码供你参考

define("DB_HOST", "localhost");
define("DB_USERNAME", "username");
define("DB_PASSWORD", "password");
define("DB_NAME", "database name");
$dbc = mysqli_connect(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);

有了这个连接参数,我已经执行了你的代码,它工作了。

请将echo mysqli_error();改为echo mysqli_error($dbc);

mysqli_error接受一个参数,即连接链接