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

时间:2017-04-27 16:23:17

标签: php mysql database image pdo

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

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

这是我的输入表格:

<!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并显示它们。我曾考虑将图像本身存储在数据库中,但被告知建议不要这样做。

1 个答案:

答案 0 :(得分:0)

你使用我的sql数据库与php PDO .in 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