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

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

有没有一种方法可以避免刷新页面时插入重复或空白值的问题?

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

?>

参考方案

我将内容重新格式化为我认为应该更具可读性并且更容易区分代码中发生的事情。我还更新了您的查询,以显示如何正确“清理”您的输入。

我仍然认为将数据发送到服务器的过程是错误的,但是希望这段代码可以对您有所帮助。我也将以面向对象的方式进行此操作。.但是我觉得您的问题只剩下= P一点了。就像其他所有人都在说的那样,您的代码逻辑只是稍微偏离了一点。

至于复制,在将文件添加到数据库之前先检查文件是否已存在。

<?php
$_GET['i'] = 'file1.png, file2.png, file3.png'; // This is just for testing ;].

$images = retrieve_images();
insert_images_into_database($images);

function retrieve_images()
{
    //As someone else pointed out, you do not want to use GET for this and instead want to use POST. But my goal here is to clean up your code
    //and make it work :].

    $images = explode(',', $_GET['i']);
    return $images;
}

function insert_images_into_database($images)
{
    if(!$images)//There were no images to return
        return false;

    $pdo = get_database_connection();

    foreach($images as $image)
    {
        $sql = "INSERT INTO `urlImage` (`image_name`) VALUES ( ? )";
        $prepared = $pdo->prepare($sql);
        $prepared->execute(array($image));
    }
}

function get_database_connection()
{
    $host = 'localhost';
    $db = 'test';
    $user = 'root';
    $pass = '';
    try {
        $pdo = new PDO("mysql:host=" . $host . ";dbname=" . $db, $user, $pass);
        $pdo->exec('SET CHARACTER SET utf8');

        } catch(PDOException $e) {
            die('There was a problem');
        }

    return $pdo;
}

php:是否有充分的理由引用所有数组键/索引? - php

我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…

当文本等于单选按钮的值时,选择单选按钮 - php

当下拉菜单中的文本等于值时,是否可以选择2个名称相同但值不同的单选按钮中的1个?https://paste.ee/p/2iCjA第97行我用if-else尝试过:if($('input[name="anrede"]').val() == 'Herr') { $("#Herr").…

PHP标头功能不起作用 - php

我曾经使用此功能从一个PHP页面重定向到另一个:header( 'Location: student.php?cnp='.$_REQUEST['name']) ; 在我的本地主机中,它确实可以工作,但是如果在Internet中对其进行测试,则不会重定向。我也尝试给出完整的路径(如http://.../student.p…

在单次点击甚至点击链接时创建不同的功能 - php

我有3个链接,它们是学生的名字。第一次单击链接或奇数时间时,会出现另一个div,其中包含该学生的详细信息。在第二次或偶数时间单击同一链接时,我需要隐藏学生div。使用jquery的data()事件对我来说效果很好。我的要求是,如果我单击第一个学生链接,则会显示第一个学生的详细信息。如果单击第二个学生链接,则会显示第二个学生的详细信息。如果再次单击第一个链接,…

将DataTables中的aoData数组与序列化形式组合 - php

我正在使用jquery数据表,并希望将aoData与使用jquery的表单序列化数据结合起来。fnServerData: function(sSource, aoData, fnCallback,oSettings) { aoData.concat( $("#frm").serializeArray()); console.log(aoD…