我想在数据库中插入名称,描述和图像。此代码有什么问题?
<?php
$host="localhost";
$user="root";
$password="";
$database="jin";
$sql = mysqli_connect($host,$user,$password,$database) or die("cannot connect");
if(isset($_POST['submit']))
{
$file = addslashes(file_get_contents($_FILES["image"]["tmp_name"]));
$name = $_POST['name'];
$description = $_POST['description'];
$query = "INSERT INTO cai(name,description,image,) VALUES ('$name','$description','$file')";
if(mysqli_query($sql,$query))
{
echo"uploaded";
}
else {
echo"not inserted";
}
}
?>
答案 0 :(得分:3)
请勿使用root
用PHP连接到数据库。使用专门用于PHP且具有最低特权的新的-specialist- SQL用户。否则,这是错误的做法,并可能导致安全漏洞。
从列名称列表...image,)
删除最终逗号
用反引号括住您的列名(这些家伙:“`”;通常在拉丁键盘的数字1旁边)。
3b)
避免使用Reserved words。
用
正确输出MySQLi错误 mysqli_query($sql,$query) or error_log(print_r(mysqli_error($sql),true));
它将精确的MySQLi错误输出到您的错误日志文件中。
使用准备好的语句。 Huh?
答案 1 :(得分:-2)
输入参数插入到字符串中。如果是这种情况,那是不正确的,因为我认为您在db中已经声明了列名,描述,文件是varchar或text。
您可以更正以下内容:
$query = "INSERT INTO cai(name,description,image,) VALUES ('".$name."','".$description."','".$file."')";