修复mysql错误mysqli_stmt_bind_param()

时间:2016-10-09 05:38:18

标签: php mysql

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

  

警告:mysqli_stmt_bind_param()要求参数1为mysqli_stmt,布尔值在第317行的C:\ xampp \ htdocs \ MYSQL \ studentadded.php中给出

     

警告:mysqli_stmt_execute()要求参数1为mysqli_stmt,布尔值在第327行的C:\ xampp \ htdocs \ MYSQL \ studentadded.php中给出

     

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

     

警告:mysqli_error()预计在第357行的C:\ xampp \ htdocs \ MYSQL \ studentadded.php中只提供1个参数,0

     

警告:mysqli_stmt_close()要求参数1为mysqli_stmt,第361行的C:\ xampp \ htdocs \ MYSQL \ studentadded.php中给出布尔值

这是代码:

<!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>

1 个答案:

答案 0 :(得分:0)

我认为您的连接文件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接受一个参数,即连接链接。