我目前正在 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);
}
?>
最佳答案
首先,您应该检查 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/