我正在写一个脚本来检查文件夹K:/漫画,并将每个名称+数字插入到数据库中,表格名称=漫画。现在我想要做的是在运行插入查询之前检查这个漫画是否已经存在。这些字符串的正确检查语法是什么?
表结构:
CREATE TABLE IF NOT EXISTS `comics` (
`id` int(100) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`issue` varchar(4) DEFAULT NULL,
`bio` longtext NOT NULL,
`pages` int(10) NOT NULL,
`size` varchar(100) NOT NULL,
`price` varchar(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;
代码:
<?php
$main_folder = 'K:/Comics/'; // should be K:\Comics\ but I changed it because of the highlighting issue
$folders = glob($main_folder.'* [0-9]*', GLOB_ONLYDIR);
$comics_series = array();
foreach($folders as $folder){
$comics_series[] = preg_split('/(.+)\s(\d+)/', str_replace($main_folder, '', $folder), -1, PREG_SPLIT_DELIM_CAPTURE|PREG_SPLIT_NO_EMPTY);
}
$values = array();
foreach($comics_series as $pair){
$values[] = "('".mysql_real_escape_string($pair[0])."', '".((int) $pair[1])."')";
}
$query = 'INSERT IGNORE INTO comics (name, issue) VALUES '.implode(',', $values);
$result = mysql_query($query);
echo ($result) ? 'Inserted successfully' : 'Failed to insert the values';
?>
我以为会工作,但不(还增加了漫画到已经存在的DB):
$query = 'INSERT IGNORE INTO comics (name, issue) VALUES '.implode(',', $values);
$result = mysql_query($query);
echo ($result) ? 'Inserted successfully' : 'Failed to insert the values';
我忘了什么?!?该文件说,只是在那里添加IGNORE
,它会工作...
'$ query ='插入漫画(名称,问题)VALUES'.implode(',',$ values)。'在DUPLICATE KEY UPDATE comicissue = comicissue';'我发了个名字,发出一个名为comicissue的独特密钥。但它仍然不起作用,无法插入值。我现在会尝试这个新代码,谢谢! – rackemup420
'无法插入值。关键'comicissue'重复输入'2000AD-1722'。它不会跳过已经存在的记录... – rackemup420
更新我的答案,检查。 – Shef