在PHP中通过SQL语句插入图像

在PHP中通过SQL语句插入图像,php,mysql,sql,prepared-statement,Php,Mysql,Sql,Prepared Statement,最近,我尝试通过预先准备好的语句将图像插入数据库。遗憾的是,在教程中没有关于如何包含字符串以外的其他信息的信息。我想让我准备好的语句将图像传递到数据库这里是我的代码,它不工作 $connect = mysqli_connect($hostname, $username, $password, $databaseName); $fname = mysqli_real_escape_string($connect, $_POST['yname']); $lname = mysqli_real_esc

最近,我尝试通过预先准备好的语句将图像插入数据库。遗憾的是,在教程中没有关于如何包含字符串以外的其他信息的信息。我想让我准备好的语句将图像传递到数据库这里是我的代码,它不工作

$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);
}

为了将图像保存到数据库,您必须将其转换为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';
}
if(!empty($\u文件['image']['name'])){
$imgFile=$\u文件['image']['name'];
$tmp_dir=$_文件['image']['tmp_name'];
$imgSize=$_文件['image']['size'];
$imgExt=strtolower(路径信息($imgFile,路径信息_扩展));
$upload_dir=$folder.$filename;
$filename=rand(10001000000)。“..$imgExt;
$valid_extensions=array('jpeg','jpg','png','gif');
if(在数组中($imgExt,$valid_扩展名)){
如果($imgSize<5000000){
移动上传的文件($tmp\u dir,$upload\u dir.$filename);
}否则{
$error='图像太大';
}
}否则{
$error='请选择有效扩展名的图像';
}
}否则{
$error='Upload image';
}

上面是将映像保存到本地或服务器的代码。现在,将图像名称包括到数据库查询中。我希望这有帮助。

图像不属于数据库,它们属于文件系统。您应该将映像存储在一个目录中,然后将映像的路径存储在数据库中,整个代码是什么?如果是,则会得到一个}extra。不清楚是要插入blob字段和嵌入其中的图像,还是只想将文件名字符串存储到数据库中。在标题中,您似乎正在尝试存储一个blob,代码表明您正在尝试插入文件名stringIf。如果您正在尝试存储的是blob,下面是PHP PDO文档,说明了如何执行此操作。PDO是PHP中连接数据库的指定方式,因为它与数据库无关,并且具有许多功能。不,您不必将图像转换为数据url格式。你可以将它们存储为水滴。我不是在转换它,我是在建议他。我告诉你这是一个不好的建议。