簡體   English   中英

通過PHP插入MySQL錯誤

[英]error in inserting to mysql by php

我試圖插入數據庫,它給了我這個:

插入錯誤您的SQL語法有誤。 檢查與您的MySQL服務器版本相對應的手冊以獲取正確的語法以在第3行的')'附近使用數據庫中的某些錯誤

public function set_Animal($Name,$Gender,$Allergie,$Age,$Weight,$Type_ID,$Owner_ID,$Colour){
    $Animal_Query= "INSERT INTO animal (Name,Gender,Allergie,Age,Weight,Type_ID,Owner_ID,Colour)
                    VALUES ($Name,$Gender,$Allergie,$Age,$Weight,$Type_ID,$Owner_ID,$Colour)";
    if(mysqli_query($this->conn,$Animal_Query)) {
        return true ;
    }
    else {
        echo "Error inserting ".mysqli_error($this->conn);
        return false ;
    }
}

為了使代碼正常工作,您必須將具有字符數據類型的列用單引號引起來。 但是,這對於SQL注入是值得懷疑的。 請改用准備好的語句。

假設所有列都是字符,年齡和粗細除外是數字:

編輯:添加了檢查$conn->prepare是否成功。

public function set_Animal ($Name,$Gender,$Allergie,$Age,$Weight,$Type_ID,$Owner_ID,$Colour){

    $Animal_Query = "INSERT INTO animal (Name,Gender,Allergie,Age,Weight,Type_ID,Owner_ID,Colour) VALUES (?,?,?,?,?,?,?,?)";

    if($stmt = $conn->prepare($Animal_Query)){
        $stmt->bind_param("sssiisss", $Name, $Gender, $Allergie,$Age,$Weight,$Type_ID,$Owner_ID,$Colour);

        if($stmt->execute())
            return true;
        else
            return false;

    } else {
        printf("Errormessage: %s\n", $mysqli->error);
    }
    $stmt->close();
}

函數bind_param將參數綁定到SQL查詢。 “ sssiisss”參數列出了參數所包含的數據類型。 s字符告訴mysql參數是一個字符串,而i告訴它它是一個數字。

該參數可能是以下四種類型之一:

i:整數

d:雙倍

s:字符串

b:BLOB

對於每個參數,我們應該使用其中之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM