【发布时间】:2015-12-17 13:12:12
【问题描述】:
我正在尝试在 php 中使用 mysqli 将图像保存到我的数据库中。我做了一个演示,我使用了一个简单的 mysqli_query() 并且它有效。但是,当我尝试使用准备好的语句做同样的事情时;它行不通。这是我的代码:
$uploadedImage = array();
$uploadedImageName = array();
if(isset($_FILES['files']['tmp_name'])){
$num_files = count($_FILES['files']['tmp_name']);
echo $num_files;
if($num_files == 5){
for($i = 0; $i < $num_files; $i++){
$imgName = addslashes($_FILES['files']['tmp_name'][$i]);
$name = addslashes($_FILES['files']['name'][$i]);
if($_FILES['files']['tmp_name'][$i] != ""){
$imageContents = file_get_contents($imgName);
$encodedImage[$i] = base64_encode($imageContents);
$filename[$i] = $_FILES['files']['name'][$i];
array_push($uploadedImageName, $filename[$i]);
array_push($uploadedImage, addslashes($encodedImage[$i]));
echo "I got the file..<br>";
echo ",,".$filename[$i];
echo $encodedImage[$i];
}
}
} else{
echo "Number of files should be equal to 5";
return;
}
$sql = "INSERT INTO profile(first_name, middle_name, surname, imgname1, img1, imgname2, img2, imgname3, img3, imgname4, img4, imgname5, img5) VALUES (?, ?, ?,?, ?,?, ?,?, ?,?, ?,?, ?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ssssbsbsbsbsb", $firstName, $middleName, $surname, $uploadedImageName[0], $uploadedImage[0], $uploadedImageName[1], $uploadedImage[1], $uploadedImageName[2], $uploadedImage[2], $uploadedImageName[3], $uploadedImage[3], $uploadedImageName[4], $uploadedImage[4]); // bind variables..
if($stmt->execute()){
echo 'success';
} else{
eccho 'failure';
}
然而,当我查看我的数据库时,它给了我成功;我在图像列下没有图像。我想知道为什么会这样。我可以知道原因吗?
【问题讨论】:
-
错误信息是什么?名字,中间名被插入?
-
您是否在插入查询的上方仅打印了 $uploadedImageName ?你得到了适当的回应吗?
-
是的,我在我的 php 中得到了 base64 编码的图像
-
@n01ze 是的。除了作为 blob 的图像之外,所有字段都被插入
-
我真的不喜欢将图像存储在数据库中。 stackoverflow.com/questions/492549/…