[英]double data on mysql
我使用 php 運算符 && 選擇多個數據,以便在 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";
}
}
歡迎使用堆棧溢出! 此代碼片段看起來不錯,但是我有兩個建議您可能需要查看:
}
。 不確定是你沒有復制它還是它實際上不存在。 確保你的if
語句有一個右花括號!'
) — 它們可能會干擾您的 MySQL 語句並插入惡意代碼。 這被稱為“MySQL 注入”並且非常常見。 試着研究一下,也許看看這個有用的 mysqli 函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.