php - 在PHP中上传图像将文件路径保存到数据库

标签 php mysql database image pdo

我有一个工作图像上传,可将图像保存到上传目录。我现在尝试使用 PDO 将文件路径和图像名称插入到我的 mysql 数据库中。

没有抛出任何错误,但插入数据库不起作用。当 SQL 语句作为任何 echo 运行时,它似乎会停止程序,但不会输出任何内容。

这是我的输入表单:

<!DOCTYPE html>
<html>
<body>

<form action="views/imageupload/imageupload.php" method="post" enctype="multipart/form-data">
    <label>Image Tag: <input type="text" name="img_tag"></label>
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

这是我的 php 上传:

<?php
$target_dir = "uploads/";
$target_store_url = basename($_FILES["fileToUpload"]["name"]);
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image -  " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}

$image_insert_tag = $_POST['img_tag'];
$image_insert_SQL = "INSERT INTO images VALUES ('','$image_insert_tag', $target_store_url)";
$insert_exec = $link->query($image_insert_SQL);

// Check if uploadOK = 0 because of an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";

//Upload file - code
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {

        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}

?>

为了澄清,这两个文件都位于“views/imageupload”中,并且该目录中还有另一个名为“uploads”的目录,用于存储图像。当在导航栏中单击该页面时,这一切都可以从包含该页面的索引页面进行访问。

我一直在阅读大量与此相关的其他问题,但我还没有设法解决它。我尝试这样做的原因是因为我将创建另一个页面,该页面将是一个画廊并显示所有上传的图像。为此,我将使用一条语句来提取所有图像 URL 并显示它们。我曾考虑过将图像本身存储在数据库中,但被告知不建议这样做。

最佳答案

您将我的sql数据库与php PDO一起使用。在php PDO中,有一些角色可以将数据插入到数据库中,您必须遵循角色。

// prepare sql and bind parameters
    $stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
VALUES (:firstname, :lastname, :email)");
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);

// insert a row
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute(); 

我希望如果你尝试像这样插入它不会正常工作。

如需更多帮助,请参阅。 https://php.net/manual/en/pdo.prepared-statements.php

关于php - 在PHP中上传图像将文件路径保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43663173/

相关文章:

php - MySQL 表锁定(读)

mysql - confluence 安装导致 500 异常 HibernateException

sql - 查询三张表无输出

php - 如何用键和值分解多维数组

PHP 代码在 HTML 输入标记中未正确解析

mysql - 高可用性apache/mysql

mysql - MySQL 中这种查询的最佳索引是什么?

php - 无法注册和登录

php - 尝试在 PHP 中使用 "SET @rownum = 0;"时出错

mysql - 在子查询中显示表状态?