пытался сравнить
$r = mysql_query ("SELECT title FROM text");
$ro = mysql_fetch_array ($r);
if ($TITLE == $ro['TITLE'])
{
echo "такой TITLE уже существует";
}
но в этом случае код сравнивает толка с первым столбцом из базы, а как можна сделать проверку всех TITLE в базе данных, и если есть такой TITLE то даст ошибку а если нет то продолжит далее....
Спустя 2 минуты, 54 секунды (8.11.2010 - 12:41) Lenarfate написал(а):
"SELECT COUNT(*) AS `cnt`
FROM `text`
WHERE `title` = $TITLE"
далее проверяешь, если mysql_result() вернет ноль, то записываешь, если нет(т.е. такая запись уже есть), выдаешь сообщение об ошибке
Спустя 32 минуты, 30 секунд (8.11.2010 - 13:14) sergeiss написал(а):
Lenarfate - а почему бы не использовать один запрос, который достаточно "сильный" именно в MySQL? Я про "INSERT ... ON DUPLICATE KEY UPDATE ..."
Спустя 20 минут, 19 секунд (8.11.2010 - 13:34) Lenarfate написал(а):
ON DUPLICATE KEY UPDATE вроде же обновляет запись, если дублируется оная с уникальным ключем??
Спустя 17 минут, 17 секунд (8.11.2010 - 13:51) linker написал(а):
Такой запрос
INSERT IGNORE ...и такой пых-код
if (!mysql_affected_rows())
echo "Такая запись уже существует";
else
echo "Успешно добавлено";
Спустя 11 минут, 7 секунд (8.11.2010 - 14:03) vio1984 написал(а):
Цитата (linker @ 8.11.2010 - 10:51) |
Такой запросINSERT IGNORE ...и такой пых-код if (!mysql_affected_rows()) |
а можно поподробнее насчет INSERT IGNORE, я если честно с ним не сталкивался...
Спустя 18 минут, 22 секунды (8.11.2010 - 14:21) linker написал(а):
1. Если без IGNORE и записи не существует, то произойдет успешное добавление и mysql_affected_rows() вернет количество добавленных строк.
2. Если без IGNORE и запись по ключу существует, то вывалится ошибка.
3. Если с IGNORE и запись по ключу существует, то никаких ошибок не будет, а mysql_affected_rows() вернет нулевой результат, т.к. ничего не было добавлено.
2. Если без IGNORE и запись по ключу существует, то вывалится ошибка.
3. Если с IGNORE и запись по ключу существует, то никаких ошибок не будет, а mysql_affected_rows() вернет нулевой результат, т.к. ничего не было добавлено.
Спустя 1 час, 31 минута, 50 секунд (8.11.2010 - 15:53) vio1984 написал(а):
проблему с добавлениям я решил как Lenarfate посоветовал, но тепер столкнулся с другою, когда я пытаюсь сделать изменения в листе и перезаписать в базе он мне выдаёт то что такои титле уже существует, (как говорится за что боролся на то и напоролся) хотя я TITLE оставил как был, вазможно ли как-то изменит СКРИПТ чтобы он проверял но не трогал тот ID с которого идет запрос?
или может есть другой вариант решения данной проблемы?
$r = mysql_query ("
SELECT COUNT(*) AS `cnt`FROM `text` WHERE `title` = '$TITLE'"
);
$ro = mysql_fetch_array ($r);
if (mysql_result($r, 0) > 0)
{
echo "такой TITLE уже существует";
}
или может есть другой вариант решения данной проблемы?
Спустя 38 минут, 49 секунд (8.11.2010 - 16:32) linker написал(а):
Когда требуется изменение уже существующей записи, то алгоритм другой, а точнее банальный запрос вида, например,
UPDATE `table` SET `field` = 'значение' WHERE `id` = 1
Спустя 27 минут, 33 секунды (8.11.2010 - 16:59) sergeiss написал(а):
...и в итоге, похоже, приходим к уже упоминавшемуся мной в этой теме "INSERT ... ON DUPLICATE KEY UPDATE ..." 
Потому что, как я понял, ТС надо именно проверить наличие записи с определенным id и при её отсутствии вставить. А кто мешает проапдейтить и поставить тот же id, что уже был? Для того, чтобы был один-единственный запрос, включающий в себя как анализ, так и действие.

Потому что, как я понял, ТС надо именно проверить наличие записи с определенным id и при её отсутствии вставить. А кто мешает проапдейтить и поставить тот же id, что уже был? Для того, чтобы был один-единственный запрос, включающий в себя как анализ, так и действие.
Спустя 15 секунд (8.11.2010 - 16:59) vio1984 написал(а):
Цитата (linker @ 8.11.2010 - 13:32) |
Когда требуется изменение уже существующей записи, то алгоритм другой, а точнее банальный запрос вида, например, UPDATE `table` SET `field` = 'значение' WHERE `id` = 1 |
это действительно банальный запрос, но я не это имел ввиду
Спустя 7 часов, 2 минуты, 11 секунд (9.11.2010 - 00:02) linker написал(а):
vio1984
Тогда объяснись подробнее.
Тогда объяснись подробнее.