Почему этот код не работает так, как должен? Когда я удваиваю одну из записей, ник или адрес электронной почты, она выпадает из двойной новой записи.
Но если и псевдоним, и адрес электронной почты совпадают, он просто не удалит последнюю запись, а просто вставит повторяющуюся строку.
Примечание. У меня есть только автоматически увеличивающееся значение для каждой строки и нет отметки времени, поэтому я не могу просто удалить последнюю запись, я должен убедиться, что последняя вставленная запись удалена.
РЕДАКТИРОВАТЬ: Можно было бы предположить, что я мог бы использовать только верхний оператор if, но если бы я это сделал, ОБЕ записи были бы удалены (если бы я вынул часть И, конечно) ...
Мой код прямо сейчас (ПЕРВИЧНЫЙ КЛЮЧ - KNR):
if(($doubleEmail || $doubleNickname) && !($doubleEmail && $doubleNickname))
{
mysql_query("DELETE FROM ".$sql['table']
. " WHERE ".$sql['email']."='".mysql_real_escape_string($email)
. "' AND ".$sql['nick']."='".mysql_real_escape_string($nickName)."'");
echo "double entry";
}
elseif($doubleEmail && $doubleNickname)
{
mysql_query("DELETE FROM ".$sql['table']." WHERE KNR >
( ( SELECT MAX( KNR )-1 FROM ".$sql['table']."))");
echo "double entry";
}
1 ответ
Я бы предложил использовать
DELETE FROM `YOUR_TABLE` ORDER BY `YOUR_PRIMARY_KEY` DESC LIMIT 1
Ваш запрос генерирует ошибку 1093 sql. См. Аналогичный вопрос: Удаление строки на основе максимального идентификатора
(Замечание: всегда избегайте каждого значения в ваших запросах, даже если они не являются динамическими и поступают из файлов конфигурации.)
Похожие вопросы
Связанные вопросы
Новые вопросы
php
PHP - это широко используемый высокоуровневый, динамический, объектно-ориентированный и интерпретируемый язык сценариев, в первую очередь предназначенный для серверной веб-разработки. Используется для вопросов о языке PHP.