我正在尝试使用预准备语句将图像上传到数据库。每当我执行查询时,字段名称和id都按预期正确插入数据库,除了我在数据库中获得0字节的图像。我尝试使用move_uploaded_file()
上传多个图片并且它有效,但它只是没有使用数据库我尝试上传只有10kb大小的图像并且无法正常工作。它一直在数据库中给我0字节。
这是我的代码
//uploading image to database
function upload_image($last_id, $conn)
{
$extension = [
"jpeg",
"jpg",
"png",
"gif",
];
if (isset($_POST["submit"])) {
//in case of uploading multiple images
foreach ($_FILES["input"]["tmp_name"] as $key => $tmp_name) {
$name = basename($_FILES["input"]["name"][$key]);
$imageFileType = pathinfo($name, PATHINFO_EXTENSION);
if (in_array($imageFileType, $extension)) {
$stmt3 = $conn->prepare("INSERT INTO image (id ,name, image) VALUES (?, ?, ?)");
$image = addslashes(file_get_contents($_FILES["input"]["tmp_name"][$key]));
$stmt3->bind_param("isb", $last_id, $name, $image);
$stmt3->execute();
$stmt3->close();
}
}//end loop
}//end if
}//end function
没有必要放置表单的html代码,因为它已经与move_uploaded_file()
答案 0 :(得分:0)
我只将bind_bram中的$ image中的$ image数据类型替换为字符串's',它可以正常工作。
$stmt3->bind_param("iss", $last_id, $name, $image);
不知道为什么它不起作用