[英]Inserting image(blob) into mysql database using php prepared statments
我需要使用准備好的語句將圖像插入 mysql 數據庫...除了圖像之外,其他所有內容都在插入
$name = mysqli_real_escape_string($conn, $_POST['name']);
$category = mysqli_real_escape_string($conn, $_POST['category']);
$privacy = mysqli_real_escape_string($conn, $_POST['privacy']);
$maxmembers = mysqli_real_escape_string($conn, $_POST['maxmembers']);
$description = mysqli_real_escape_string($conn, $_POST['description']);
$file = $_FILES['avatar']['tmp_name'];
$image = addslashes(file_get_contents($_FILES['avatar']['tmp_name']));
$image_name =addslashes($_FILES['avatar']['tmp_name']);
$image_size = getimagesize($_FILES['avatar']['tmp_name']);
$sql = "INSERT INTO hjuma_groups (name, description, category, privacy, maxmembers, owner, avatarname, avatar) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)) {
echo "SQL error";
}else {
mysqli_stmt_bind_param($stmt,"sssssssb", $name,$description,$category, $privacy,$maxmembers, $owner, $image_name, $image);
mysqli_stmt_execute($stmt);
}
我認為你所缺少的那塊拼圖是圖像數據上的base64_encode
,如下所示:
$name = $_POST['name']);
$category = $_POST['category'];
$privacy = $_POST['privacy'];
$maxmembers = $_POST['maxmembers']);
$description = $_POST['description']);
$name = $_FILES['avatar']['name'];
$image_name = $_FILES['avatar']['tmp_name'];
$image = base64_encode( file_get_contents( $image_name ) );
$image_size = getimagesize( $image_name );
$sql = "insert into `hjuma_groups`
( `name`, `description`, `category`, `privacy`, `maxmembers`, `owner`, `avatarname`, `avatar`)
values
(?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = mysqli_stmt_init($conn);
if( !mysqli_stmt_prepare( $stmt, $sql ) ) {
echo "SQL error";
}else {
mysqli_stmt_bind_param( $stmt, "sssssssb", $name, $description, $category, $privacy, $maxmembers, $owner, $image_name, $image );
mysqli_stmt_execute($stmt);
}
你不需要通過編碼插入你的圖像到 base64_encode 它可以很容易地通過這樣做來工作
$image=file_get_contents($_FILES['your_image_name']['tmp_name']);
然后在您准備好的語句中,您需要插入這樣的數據
mysqli_stmt_bind_param($stmt,"s",$image);
插入圖像作為存儲在 blob data.table 中。
然后像這樣在您的 web 頁面中顯示它
<?php
echo '<img src="data:image/jpeg;base64,' . base64_encode($row['your_blob_image_table']) . '" alt="" />';
?>
注意:mysqli_escape_real_string 和 addslashes 會在准備好的語句中產生問題,請不要使用它。 如果您喜歡我的回答,請將我的回答放在第 1 位。謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.