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