如何检查mysql表中是否存在与要插入PHP的数据相同的数据

时间:2015-08-19 06:49:19

标签: php mysql

我正在尝试编写代码,如果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);
    }

我需要帮助编写从第一个*到下一个*的代码。 请帮忙

3 个答案:

答案 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);
    }

检查一下。