двойные данные на 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')");

-1

Решение

При обновлении до mysqli я рекомендую объектно-ориентированный синтаксис, потому что с ним лучше работать.

В соответствии с лучшей практикой «минимизировать количество обращений к базе данных», я сконцентрирую ваши три запроса в одном объединенном вызове SELECT, а затем проверю результат, отличный от 0.

Мое непроверенное предложение с использованием объектно-ориентированного синтаксиса mysqli (я тестировал запрос SELECT в PHPMyAdmin):

$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";
if (!$conn = new mysqli("localhost", "root","","dbname")) {
echo "Database Connection Error" // $conn->connect_error
} elseif (!$stmt = $conn->prepare($query)) {
echo "Prepare (Select) Syntax Error"; // $conn->error
} elseif (!$stmt->bind_param("ssss", $dielz, $dielz, $date, $nam) || !$stmt->execute() || !$stmt->bind_result($tally) || !$stmt->fetch()) {
echo "Select Statement Error"; // $stmt->error
} elseif (!$tally) {
$stmt->close();
// insert qualifying data
if (!$stmt = $conn->prepare("INSERT INTO pending_media VALUES ('',?,?)")) {
echo "Prepare (Insert) Syntax Error"; // $conn->error;   // don't show exact error publicly
} elseif (!$stmt->bind_param("ss", $nam, $dielz) || !$stmt->execute()) {
echo "Insert Query Error"; // $stmt->error;
}else{
echo "Success";
}
}
0

Другие решения

добро пожаловать в стек переполнения! Этот фрагмент кода выглядит хорошо, однако у меня есть два предложения, которые вы можете рассмотреть:

  1. Вы не предоставили закрытие } после вашего кодового блока. Не уверен, что вы просто не скопировали его или его не существует. Убедитесь, что у вас есть закрывающая фигурная скобка для вашего if заявление!
  2. Ваши запросы MySQL не могут быть экранированы, если вы не отключите их. Представьте, что одна из переменных в вашем коде MySQL имеет закрывающую кавычку (') — они могут связываться с вашим оператором MySQL и вставлять вредоносный код. Это называется «MySQL инъекция», и это очень распространено. Попробуйте исследовать это, и, возможно, посмотрите на эта полезная функция mysqli.
-2

По вопросам рекламы [email protected]