PHP:检查mysql中是否存在行

时间:2017-06-27 12:09:26

标签: php mysql

在我的数据库中准备重复的条目我想检查我的MYSQL表中是否存在该ID,但是如果我插入多行,我不知道如何检查它。

这是我的代码:

    if(is_array($newdata)){

    $sql = "INSERT INTO `events` (eventid, eventname, eventstart, eventend, coverid, coverurl, placeid, placename, city, country, latitude, longitude, street, zip) values ";

    $valuesArr = array();
        foreach($newdata as $data){
            $id = $data['id'];
            $name = $data['eventname'];
            $start = $data['eventstart'];
            $end = $data['eventend'];
            $coverid = $data['coverid'];
            $coverurl = $data['coverurl'];
            $placeid = $data['placeid'];
            $placename = $data['placename'];
            $city = $data['city'];
            $country = $data['country'];
            $latitude = $data['latitude'];
            $longitude = $data['longitude'];
            $street = $data['street'];
            $zip = $data['zip'];

            $name = mysqli_real_escape_string($conn, $name);

            $valuesArr[] = "('$id', '$name', '$start', '$end', '$coverid', '$coverurl', '$placeid', '$placename', '$city', '$country','$latitude','$longitude','$street','$zip')";
        }
    $sql .= implode(',', $valuesArr);
    $result = mysqli_query($conn,$sql);
    if(!$result)
    {
        die('Error : ' . mysqli_error($conn));
    }
}

我想忽略现有的条目并转到下一行。

6 个答案:

答案 0 :(得分:3)

我不记得确切的语法,但做一个选择并检查它是否为空:

$id = mysqli_fetchone("SELECT eventid FROM events WHERE eventid = ${id}");
if (is_null($id)) {
    continue;
} else {
    // insert
}

答案 1 :(得分:2)

=>尝试使用此检查电子邮件ID,您可以使用此方法验证所有文件

$query = mysqli_query($con, "SELECT * FROM emails WHERE email='".$email."'");

if(mysqli_num_rows($query) > 0){

    echo "email already exists";
}else{
    // do something
    if (!mysqli_query($con,$query))
    {
        die('Error: ' . mysqli_error($con));
    }
}

答案 2 :(得分:2)

您是否尝试过INSERT IGNORE?

有si相关Q / A

SQLGetData doc

SQLBind

答案 3 :(得分:0)

在插入之前设置一个查询 从表| _name中选择id,其中id = $ id 然后检查行数,如果num_rows == 0则执行insert查询 别的什么

algo:
$query = "your id check query"
execute query
$num_rows = get num rows
if($num_rows == 0)
  your insert query
else
  nothing

答案 4 :(得分:-1)

我想你可以尝试一下 SELECT EXISTS(SELECT * FROM table1 WHERE ...)

答案 5 :(得分:-1)

我想将您的问题“如何检查以避免重复”更改为“如何防止重复”。

在数据库表中将列ID定义为唯一。 (也称为唯一索引) 因此,Mysql将拒绝重复的ID条目。

然后我会执行1个查询foreach记录来插入,忽略错误。 (或检查是否是重复输入错误)并且在发生错误时不会死亡

使用INSERT IGNORE INTO ....