下面的代码将图像上传到我的名为upload_image
的sql数据库。
if(isset($_POST['submit'])){
$target_path = "images/";
$target_path = $target_path . basename($_FILES['file']['name']);
if(move_uploaded_file($_FILES['file']['tmp_name'], $target_path)){
$conn =new mysqli("localhost", "root", "", "upload_image");
$sql = "Insert into upload_image('path') values('$target_path')";
if($conn->query($sql)==TRUE){
echo"<br><br>";
}else{
echo "Error on upload".$sql.$conn->error;
}
}
}
显示的错误是
错误将图像转换为路径(‘upload_image’)值(‘uploadInsert /ao.png’)
您的SQL语法中有一个错误;请查看与您的MariaDB服务器版本相对应的手册,了解在第1行使用附近的''path')值(‘image/ao.png’)的正确语法
下面是HTML部分:
<form method="post" enctype="multipart/form-data">
<input type="hidden" value=="1000000" name="MAX_FILE_SIZE"/>
<input type="file" name="file"/>
<input type="submit" name="submit" value="Upload"/>
HTML和PHP都在一段代码中。
发布于 2018-06-07 05:02:13
命令行:
$sql = "Insert into upload_image('path') values('$target_path')";
应该是:
$sql = "Insert into upload_image(path) values('$target_path')";
换句话说,查询中的列名两边不应该有引号。
可读性方面的:可以使用带有关键字的大小写
$sql = "INSERT INTO upload_image (path) VALUES ('$target_path')";
用于安全性的:可以使用预准备语句
代码容易受到SQL注入的攻击,因此更好的方法是使用预准备语句,即
$sql = "INSERT INTO upload_image (path) VALUES (?)";
$stmt = $conn->prepare($sql);
$stmt->bind("s", $target_path);
$stmt->execute();
发布于 2018-06-07 05:02:30
正确的语法应该是
INSERT INTO upload_image (path) VALUES ('$target_path')
不带引号的字段名
https://stackoverflow.com/questions/50729459
复制相似问题