[英]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.