我想在数据库中插入名称,描述和图像。我的代码有什么问题?

时间:2019-02-11 07:03:55

标签: php mysql mysqli

我想在数据库中插入名称,描述和图像。此代码有什么问题?

<?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";
    }
}
?>

2 个答案:

答案 0 :(得分:3)

1)

请勿使用root用PHP连接到数据库。使用专门用于PHP且具有最低特权的新的-specialist- SQL用户。否则,这是错误的做法,并可能导致安全漏洞。

2)

从列名称列表...image,)删除最终逗号

3)

用反引号括住您的列名(这些家伙:“`”;通常在拉丁键盘的数字1旁边)。

3b)

避免使用Reserved words

4)

阅读PHP error log

5)

正确输出MySQLi错误
 mysqli_query($sql,$query) or error_log(print_r(mysqli_error($sql),true));

它将精确的MySQLi错误输出到您的错误日志文件中。

6)

使用准备好的语句。 Huh?

答案 1 :(得分:-2)

输入参数插入到字符串中。如果是这种情况,那是不正确的,因为我认为您在db中已经声明了列名,描述,文件是varchar或text。

您可以更正以下内容:

$query = "INSERT INTO cai(name,description,image,) VALUES ('".$name."','".$description."','".$file."')";