mysql 上的双重数据

double data on mysql

我使用 php 运算符 && 来 select 多个数据,以便 mysql 上没有重复。 我在 运行 下面使用的代码可以吗? PHP运算符有没有更简单的用法?

$date= date('Y/m/d');
$cekcount = mysql_num_rows(mysql_query("SELECT * FROM `pending_media` where `mediaid`='$dielz'"));
$cekcount2 = mysql_num_rows(mysql_query("SELECT * FROM `media` where `mediaid`='$dielz'"));
$selectcount = mysql_query("SELECT * FROM `media` where `date`='$date' AND `uplink`='$nam'");
$cekcount3 = mysql_num_rows($selectcount);
if($cekcount == 0 && $cekcount2 == 0 &&  $cekcount3 == 0){
mysql_query("INSERT INTO pending_media VALUES('','$nam','$dielz')");

升级到 mysqli,我会推荐面向对象的语法,因为它更好用。

根据“尽量减少对数据库的调用”的最佳做法,我会将您的三个查询压缩为一个统一的 SELECT 调用,然后检查非 0 结果。

我使用 mysqli 的面向对象语法的未经测试的建议(我在 PHPMyAdmin 中测试了 SELECT 查询):

$query = "SELECT SUM(tally)
          FROM (
              SELECT COUNT(*) AS tally
              FROM pending_media
              WHERE mediaid = ?
              UNION ALL
              SELECT COUNT(*)
              FROM media
              WHERE mediaid = ? OR (date = ? AND uplink = ?)
          ) t";
$conn = new mysqli("localhost", "root","","dbname");
$stmt = $conn->prepare($query);
$stmt->bind_param("ssss", $dielz, $dielz, $date, $nam);
$stmt->execute();
$stmt->bind_result($tally);
$stmt->fetch();
if (!$tally) {
    $stmt->close();
    // insert qualifying data
    $stmt = $conn->prepare("INSERT INTO pending_media VALUES ('',?,?)");
    $stmt->bind_param("ss", $nam, $dielz);
    if ($stmt->execute()) {
        echo "Insert Query Error"; // $stmt->error;
    }else{
        echo "Success";
    }
}