最近,我试图通过准备好的语句将图像插入数据库。可悲的是,在教程中,除了字符串之外,没有其他信息。我想让准备好的语句将图像传递到数据库中,这是我的无效代码。
$connect = mysqli_connect($hostname, $username, $password, $databaseName);
$fname = mysqli_real_escape_string($connect, $_POST['yname']);
$lname = mysqli_real_escape_string($connect, $_POST['email']);
$filename = $_FILES['uploadfile']['name'];
$filetmpname = $_FILES['uploadfile']['tmp_name'];
$folder = 'imagesuploadedf/';
// edited and added below code. it will check if folder exists and create if not exists.....
$foldername = 'imagesuploadedf';
if ( ! is_dir($foldername)) {
mkdir($foldername);
}
// end of edited and added code
move_uploaded_file($filetmpname, $folder.$filename);
// $sql = "INSERT INTO `uploadedimage` (`imagename`) VALUES ('$filename')";
// connect to mysql database using mysqli
$sql = "INSERT INTO `tabela`(`name`, `email`, `imagename`) VALUES (?, ?, ?)";
$stmt = mysqli_stmt_init($connect);
if(!mysqli_stmt_prepare($stmt, $sql)){
echo "Error";
} else{
mysqli_stmt_bind_param($stmt, "sss", $fname, $lname, $filename);
mysqli_stmt_execute($stmt);
}
mysqli_close($connect);
}
答案 0 :(得分:-1)
要将图像保存到数据库,必须将它们转换为dataurl格式,这将使数据库很大。 有一种替代方法,您尝试在上面将数据保存到本地或服务器中,然后将其名称保存到数据中并从那里调用
if (!empty($_FILES['image']['name'])) {
$imgFile = $_FILES['image']['name'];
$tmp_dir = $_FILES['image']['tmp_name'];
$imgSize = $_FILES['image']['size'];
$imgExt = strtolower(pathinfo($imgFile, PATHINFO_EXTENSION));
$upload_dir = $folder.$filename;
$filename = rand(1000, 1000000) . "." . $imgExt;
$valid_extensions = array('jpeg', 'jpg', 'png', 'gif');
if (in_array($imgExt, $valid_extensions)) {
if ($imgSize < 5000000) {
move_uploaded_file($tmp_dir, $upload_dir . $filename);
} else {
$error = 'Image is too large';
}
} else {
$error = 'Please choose image of valid extension';
}
} else {
$error = 'Upload image';
}
上面的是用于将映像保存到本地或服务器的代码。现在,将图像名称包括在数据库查询中。我希望这会有所帮助。