我正在尝试编写代码,如果mysql表中的数据与您要插入的内容相同,则不执行任何操作,但如果没有则插入到表中。
到目前为止,这是我的代码:
for($i=0;$i<count($TitleArray);$i++){
$sql = "SELECT * FROM ytable WHERE Title *LIKE the one I am about to insert"
if (Data about to insert already exists in table){
"do nothing";
}*
else{
$sql = "INSERT INTO ytable (Title, Pubdate, Link, Tweeted, Created)
VALUES ('$TitleArray[$i]', '$PubdateArray[$i]', '$LinkArray[$i]', NULL, $created)";
mysql_query($sql,$db_con);
}
我需要帮助编写从第一个*到下一个*的代码。 请帮忙
答案 0 :(得分:0)
设置字段&#34;标题&#34;作为唯一键,然后只需使用INSERT IGNORE
for($i=0;$i<count($TitleArray);$i++){
$sql = "INSERT IGNORE INTO ytable (Title, Pubdate, Link, Tweeted, Created) VALUES ('$TitleArray[$i]', '$PubdateArray[$i]', '$LinkArray[$i]', NULL, $created)";
mysql_query($sql,$db_con);
}
句子INSERT IGNORE将检查重复键是否有任何问题。如果有,则不会插入任何内容。如果没有问题,那么将插入您的数据。
修改强>
如果您无法修改表格,正如您在评论中所说,那么请使用此代码。你的函数是mysql_num_rows
(你最好使用mysqli而不是mysql)
for($i=0;$i<count($TitleArray);$i++){
$sql = 'SELECT * FROM ytable WHERE Title LIKE "the one I am about to insert"';
$res = mysql_query($sql);
if (empty(mysql_num_rows($res))){
$sql_insert = "INSERT INTO ytable (Title, Pubdate, Link, Tweeted, Created) VALUES ('$TitleArray[$i]', '$PubdateArray[$i]', '$LinkArray[$i]', NULL, $created)";
$res_insert = mysql_query($sql_insert,$db_con);
}
}
答案 1 :(得分:0)
试试这个
INSERT INTO ytable (Title, Pubdate, Link, Tweeted, Created)
SELECT $TitleArray[$i], $PubdateArray[$i], $LinkArray[$i], NULL, $created FROM ytable
WHERE NOT EXISTS (
SELECT title FROM ytable WHERE Title='abcd'
) LIMIT 1;
答案 2 :(得分:0)
我认为这对你有用。
for($i=0;$i<count($TitleArray);$i++){
$sql = "SELECT * FROM ytable WHERE Title='".$TitleArray[$i]."' AND Pubdate='".$PubdateArray[$i]."' AND Link='".$LinkArray[$i]."' AND Tweeted='NULL' AND Created='".$created."'";
$dataAvailable = mysql_query($sql,$db_con);
if (mysql_num_rows($sql) > 0) {
"do nothing";
}
else{
$sql = "INSERT INTO ytable (Title, Pubdate, Link, Tweeted, Created) VALUES ('$TitleArray[$i]', '$PubdateArray[$i]', '$LinkArray[$i]', NULL, $created)";
mysql_query($sql,$db_con);
}
检查一下。