Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Простая проверка на уникальность поля
 
 автор: bibika   (24.10.2010 в 19:37)   письмо автору
 
 

Всем доброго времени суток
Помогите пожалуйста разобраться с такой проблемой (или лучше конечно поделитесь примером). Нужно при вставке данных в базу проверить уникальность одного поля, если есть повтор вывести уведомления о ошибке, если нет - выполнить скрипт вставки, помогите советом как это реализовать.

Спасибо

  Ответить  
 
 автор: Николай2357   (24.10.2010 в 19:57)   письмо автору
 
   для: bibika   (24.10.2010 в 19:37)
 

INSERT IGNORE INTO
и
mysql_affected_rows()

Только поле нужно сделать уникальным.

  Ответить  
 
 автор: Trianon   (24.10.2010 в 19:59)   письмо автору
 
   для: Николай2357   (24.10.2010 в 19:57)
 

IGNORE-то зачем?

  Ответить  
 
 автор: bibika   (24.10.2010 в 20:13)   письмо автору
 
   для: Trianon   (24.10.2010 в 19:59)
 

Поле уникальное. А дальше я не понял. Пожалуйста приводите полный код если не трудно. Я решил делать по такому алгоритму: выбираем все значение поля который проверяется и кладем его в переменную. А как сравнить с данными которые приходят с формы при вставке данных в базу я не знаю.

  Ответить  
 
 автор: Николай2357   (24.10.2010 в 20:18)   письмо автору
 
   для: Trianon   (24.10.2010 в 19:59)
 

>IGNORE-то зачем?
Ну автор же хочет сигнала...
Если не уникальное, записи не будет и функция вернет 0. На это и можно сориентироваться.

  Ответить  
 
 автор: bibika   (24.10.2010 в 20:20)   письмо автору
 
   для: Николай2357   (24.10.2010 в 20:18)
 

Извините, я опять ничего не понял. Приведите пожалуйста, если не трудно, полный код.
Да я напутал, извините, поле не уникальное. Поскольку с этими данными уже работали в других средах, и среди этого поля есть множество повторов. Как в таком случае можна решить эту проблему
Спасибо

  Ответить  
 
 автор: Николай2357   (24.10.2010 в 20:27)   письмо автору
 
   для: bibika   (24.10.2010 в 20:20)
 

Если не уникальное, запрос на подсчет строк... Если больше 0, значит не добавлять...
<?
    $res 
mysql_query("SELECT COUNT(*) AS `cnt` FROM `table` 
                 WHERE `field` = '"
mysql_real_escape_string($var) ."'"
                 
);
    
    if(
mysql_result($res0) > 0)
        echo 
'Ай, есть такой';

  Ответить  
 
 автор: Trianon   (24.10.2010 в 20:46)   письмо автору
 
   для: Николай2357   (24.10.2010 в 20:18)
 

если не уникальная, то запрос будет отвергнут, mysql_query вернет false

  Ответить  
 
 автор: bibika   (24.10.2010 в 21:10)   письмо автору
 
   для: Trianon   (24.10.2010 в 20:46)
 

О, спасибо уважаемый Trianon за подсказку.

  Ответить  
 
 автор: Uzer44   (25.10.2010 в 00:13)   письмо автору
 
   для: bibika   (24.10.2010 в 21:10)
 

ещё можно хранить копию поста в MD5 хеше и при совпадении давать ошибку

  Ответить  
 
 автор: bibika   (25.10.2010 в 07:44)   письмо автору
 
   для: Uzer44   (25.10.2010 в 00:13)
 

Спасибо.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования