使用SQLi数据库从表单插入数据

时间:2014-10-24 07:59:26

标签: php mysql mysqli

我正在使用mySQLi程序从表单中获取用户输入的值并将它们提交到SQL数据库。数据库连接很好,表格是正确创建的,但是当我尝试插入语句时,麻烦就开始了。

我试过

$stmt = mysqli_prepare($dbConnection, "INSERT INTO EOI (JobRef, FName, LName, StreetAd, Suburb, State, Postcode, Email, PhoneNo, skill1, skill2, skill3, skill4, skill5, skill6, skill7, other");
mysqli_stmt_bind_param($stmt, 'isssssisisssssss', $JobNo, $FName, $LName, $StreetAd, $Suburb, $State, $Postcode, $Email, $Phone, $skill1, $skill2, $skill3, $skill4, $skill5, $skill6, $skill7, $other);
$result = mysqli_stmt_execute($stmt);
if($result){
    echo("<br /> Data inserted");
} else{
    echo("<br /> Failed");
};

$input = "INSERT INTO EOI(JobRef, FName, LName, StreetAd, Suburb, State, Postcode, Email, PhoneNo, skill1, skill2, skill3, skill4, skill5, skill6, skill7, other) VALUES ($JobNo, $FName, $LName, $StreetAd, $Suburb, $State, $Postcode, $Email, $Phone, $skill1, $skill2, $skill3, $skill4, $skill5, $skill6, $skill7, $other)";
$result = mysqli_query($dbConnection, $input);
if($result){
    echo("<br /> Data inserted");
} else{
    echo("<br /> Failed");
};

第一次尝试发出此警告:

  

警告:mysqli_stmt_bind_param()期望参数1为   mysqli_stmt,第82行文件路径中给出的布尔值

     

警告:mysqli_stmt_execute()要求参数1为mysqli_stmt,第83行的文件路径中给出布尔值

第二次尝试告诉我所有变量都是未定义的并且失败了。 这两种方法中哪一种更可取?如何解决这些错误。

这是我的全部功能

function databaseConnect() {



    $dbConnection = @mysqli_connect("host", "user", "password", "db");
    if (!$dbConnection) {
        echo "<p>Failed to connect to the server</p>";
    } else {

    $sqlquery = "SELECT * FROM EOI";
    $query= mysqli_query($dbConnection, $sqlquery);
        if (!$query){
            mysqli_query($dbConnection, "CREATE TABLE EOI (EOInumber integer primary key AUTO_INCREMENT, JobRef integer, FName varchar(30), LName varchar(30), StreetAd varchar(30), Suburb varchar(20), State varchar(3), Postcode integer(4), Email varchar(40), PhoneNo integer(10), skill1 varchar(20), skill2 varchar(20), skill3 varchar(20), skill4 varchar(20), skill5 varchar(20), skill6 varchar(20), skill7 varchar(20), other varchar(200))");

        }

        if(isset($_POST['jobno'])){ $JobNo = $_POST['jobno']; };
        if(isset($_POST['fname'])){ $FName = $_POST['fname']; };
        if(isset($_POST['lname'])){ $LName = $_POST['lname']; };
        if(isset($_POST['streetad'])){ $StreetAd = $_POST['streetad']; };
        if(isset($_POST['suburb'])){ $Suburb = $_POST['suburb']; };
        if(isset($_POST['state'])){ $State = $_POST['state']; };
        if(isset($_POST['postcode'])){ $Postcode = $_POST['postcode']; };
        if(isset($_POST['email'])){ $Email = $_POST['email']; };
        if(isset($_POST['phone'])){ $Phone = $_POST['phone']; };
        if(isset($_POST['html'])){ $skill1 = $_POST['html']; };
        if(isset($_POST['Degree'])){ $skill2 = $_POST['Degree']; };
        if(isset($_POST['SQL'])){ $skill3 = $_POST['SQL']; };
        if(isset($_POST['lift'])){ $skill4 = $_POST['lift']; };
        if(isset($_POST['years'])){ $skill5 = $_POST['years']; };
        if(isset($_POST['languages'])){ $skill6 = $_POST['languages']; };
        if(isset($_POST['otherskills'])){ $other = $_POST['otherskills']; };




    $input = "INSERT INTO EOI(JobRef, FName, LName, StreetAd, Suburb, State, Postcode, Email, PhoneNo, skill1, skill2, skill3, skill4, skill5, skill6, skill7, other) VALUES ($JobNo, $FName, $LName, $StreetAd, $Suburb, $State, $Postcode, $Email, $Phone, $skill1, $skill2, $skill3, $skill4, $skill5, $skill6, $skill7, $other)";
    $result = mysqli_query($dbConnection, $input);
    if($result){
        echo("<br /> Data inserted");
    } else{
        echo("<br /> Failed");
    };


    }

    mysqli_free_result($query);
    mysqli_close($dbConnection);

    };

1 个答案:

答案 0 :(得分:0)

首先: 变化:

$stmt = mysqli_prepare($dbConnection, "INSERT INTO EOI (JobRef, FName, LName, StreetAd, Suburb, State, Postcode, Email, PhoneNo, skill1, skill2, skill3, skill4, skill5, skill6, skill7, other");

要:

$stmt = mysqli_prepare($dbConnection, "INSERT INTO EOI VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");  //17 markers

忘记 VALUES