PHP:将图像名称插入数据库时​​出现重复/空白值

标签 php

我目前正在 MySQL 数据库中存储图像名称,以便更轻松地检索实际图像。我创建的存储名称的 php 代码遇到问题。未经我的许可,正在向数据库中进行重复和空白插入。

有没有办法避免刷新页面时插入重复值或空白值的问题?

enter image description here

<?
$images = explode(',', $_GET['i']);

$path = Configuration::getUploadUrlPath('medium', 'target');


if (is_array($images)) {
    try {
        $objDb = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);
        $objDb->exec('SET CHARACTER SET utf8');
    } catch (PDOException $e) {
        echo 'There was a problem';
    }

    $sql = "INSERT INTO `urlImage` (`image_name`) VALUES ";

    foreach ($images as $image) {
        $value[] = "('" . $image . "')"; // collect imagenames
    }

    $sql .= implode(',', $value) . ";"; //build query
    $objDb->query($sql);
}

?>

最佳答案

首先,您应该检查 foreach 语句中的空白名称,如下所示:

foreach ($images as $image) {
    if($image!='') {
        $value[] = "('".$image."')"; // collect imagenames
    }
}

其次,您应该查看 header("Location: ..."); 以防止用户刷新页面。

第三,您还可以设置 session 变量或 cookie 以防止用户两次上传相同的图像。

最后,如果图像名称是唯一的,您可以设置 UNIQUE index在图像名称上。然后使用INSERT IGNORE,这将删除所有重复项。

关于PHP:将图像名称插入数据库时​​出现重复/空白值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11494716/

相关文章:

php - mysql_close() 期望参数 1 为资源,给定为空

php - 银条默认主页

php - CakePHP 3.X 中的自动完成小部件

php - 使用php将表单更新错误发布到mysql

javascript - 为什么提交表单后我的页面会刷新?

php - 跟踪网站盗链我的图片

php - 从 flv 视频中截取屏幕截图

php - 使用php从xml中提取信息

php - 在 codeigniter 中显示数组中的所有数据

php - Laravel 5.1 - 进行迁移而不在 MySQL 中创建任何表