Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122

уникальные записи

10.07.2012, 10:44. Показов 1827. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
длина записей разная и длинная и поэтому полю с текстами было присвоено ( TEXT ) , для того чтобы не заносились одинаковые записи я сделал вот так

PHP
1
2
3
4
$r=mysql_query("SELECT id FROM my_table WHERE tx='".$tx."' LIMIT 1");
if(!$row=mysql_fetch_array($r)){
  mysql_query("INSERT INTO my_table (tx) VALUE ('".mysql_real_escape_string($vl)."')");
  }
но в базу всеравно записываются абсолютно идентичные записи , как поступить в такой ситуации?

P.s. - не ругайте если такая тема уже была, не нашел ее и ее решения...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.07.2012, 10:44
Ответы с готовыми решениями:

Вывести из БД уникальные записи
Здравствуйте, возможно не правильно сформулировал название темы. У меня есть таблица category в не 3 поля, id type и brand в поле brand у...

Вывести уникальные значения
есть страница на ней выводятся картинки по категориям, в базе у меня есть поле категории в нем есть повторяющиеся значения, например...

MySQL + PHP уникальные поля
Нужно создать примерно такую таблицу. id - номер сообщения(автоприсваеваемый), user_id - id пользователя, как сделать эти два поля...

9
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.07.2012, 10:48
Цитата Сообщение от Nebiros Посмотреть сообщение
PHP
1
2
3
if(!$row=mysql_fetch_array($r)){
 mysql_query("INSERT INTO my_table (tx) VALUE ('".mysql_real_escape_string($vl)."')");
 }
и что это получается? у вас сработает только если будет какая то ошибка при подключении-выборке.
а вообще не очень понял что вы вообще хотите сделать? проверить, есть ли уже такие записи в БД штоле?
1
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
10.07.2012, 11:13  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
проверить, есть ли уже такие записи в БД штоле?
ну да - я якобы выбираю ячейку с таким текстом и если такого текста нету то такой текст заносится, ну это так было задумано но оно неработает...

Добавлено через 1 минуту
Цитата Сообщение от KOPOJI Посмотреть сообщение
и что это получается? у вас сработает только если будет какая то ошибка при подключении-выборке
PHP
1
$r=mysql_query("SELECT id FROM my_table WHERE tx='".$tx."' LIMIT 1");
выбрать ид с таким текстом и если нету такого ид а тоесть и текста то записать...
0
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
10.07.2012, 11:15
не проще сделать уникальный ключь +
SQL
1
 ... ON DUPLICATE KEY UPDATE ...
1
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.07.2012, 11:17
Цитата Сообщение от Nebiros Посмотреть сообщение
PHP
1
$r=mysql_query("SELECT id FROM my_table WHERE tx='".$tx."' LIMIT 1");
тогда уж проверять число возвращенных рядов
PHP
1
if(!mysql_num_rows($r))
либо, еще лучше - как вам написали выше
1
 Аватар для crautcher
2450 / 2301 / 597
Регистрация: 27.05.2011
Сообщений: 7,845
10.07.2012, 11:30
кроч можно просто влепить уникальный ключь и писать insert ignore , тогда при дублировании ключа запись не добавится
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
mysql> CREATE TABLE `test` ( 
`id` INT UNSIGNED AUTO_INCREMENT , 
`text` text(1000)  ,
 PRIMARY KEY(`id`) , 
 UNIQUE (`text`(333)) 
 );
Query OK, 0 ROWS affected (0.04 sec)
 
mysql> EXPLAIN test;
+-------+------------------+------+-----+---------+----------------+
| FIELD | TYPE             | NULL | KEY | DEFAULT | Extra          |
+-------+------------------+------+-----+---------+----------------+
| id    | INT(10) UNSIGNED | NO   | PRI | NULL    | AUTO_INCREMENT |
| text  | text             | YES  | UNI | NULL    |                |
+-------+------------------+------+-----+---------+----------------+
2 ROWS IN SET (0.00 sec)
 
 
mysql> INSERT INTO `test`(`text`) VALUES ('blablabla');
Query OK, 1 ROW affected (0.00 sec)
 
mysql> INSERT INTO `test`(`text`) VALUES ('blablabla');
ERROR 1062 (23000): Duplicate entry 'blablabla' FOR KEY 'text'
 
 
mysql> INSERT IGNORE INTO `test`(`text`) VALUES ('blablabla');
Query OK, 0 ROWS affected (0.00 sec)
 
 
mysql> SELECT * FROM test;
+----+-----------+
| id | text      |
+----+-----------+
|  1 | blablabla |
+----+-----------+
1 ROW IN SET (0.00 sec)
1
217 / 157 / 30
Регистрация: 11.05.2010
Сообщений: 614
10.07.2012, 15:37
насчёт вашего варианта, то что такое $tx? наверное, с ней и есть проблема. предлагаю заменить:
PHP
1
2
3
4
5
$tx =  mysql_real_escape_string($vl);
$r=mysql_query("SELECT id FROM my_table WHERE tx='".$tx."' LIMIT 1");
if(mysql_num_rows($r) == 0){
  mysql_query("INSERT INTO my_table (tx) VALUE ('".$tx."')");
  }
ну или что-то в этом роде.
0
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
10.07.2012, 16:27  [ТС]
Цитата Сообщение от kester Посмотреть сообщение
насчёт вашего варианта, то что такое $tx? наверное, с ней и есть проблема. предлагаю заменить:
$tx эта переменная содержит текст произвольной длины причем длина может быть оч большая ( за 500
симв )
0
217 / 157 / 30
Регистрация: 11.05.2010
Сообщений: 614
10.07.2012, 16:39

Не по теме:

facepalm


проверяли на $tx, а вставляли $vl. и не понимаем, почему в базе есть более одной записи, равной этой самой $vl. а проверять на $vl не пробовали?
при чём там вообще $tx?
0
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
10.07.2012, 18:31  [ТС]
Цитата Сообщение от kester Посмотреть сообщение
проверяли на $tx, а вставляли $vl. и не понимаем, почему в базе есть более одной записи, равной этой самой $vl. а проверять на $vl не пробовали?
при чём там вообще $tx?
в оригинале и проверяется и вставляется $vl в ячейку (tx) - прост при написании примера изменял названия таблиц и полей и немного неправильно указал, моя ошибка в примерах но суть решения проблемы ясна....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.07.2012, 18:31
Помогаю со студенческими работами здесь

Уникальные поля для каждой категории
Привет. Допустим, есть сайт объявлений и множество категорий. Такие как, телефоны, авто, мото, для дома, для детей. ВСЕГО 500 категорий в...

Возможно ли сбрасывать уникальные значение из MySQL каждый день?
Существует ли способ удалять уникальные значения из таблицы MySQL каждый день? У меня имеется статистика моего сайта, туда я заношу...

Скажите пожалуйста как сделать чтоб посчитало только уникальные строки из запроса
Скажите пожалуйста как сделать чтоб посчитало только уникальные строки из запроса $result00 = mysql_query("SELECT COUNT(*)...

уникальные записи
Доброе время суток. У меня возникла проблема, существует таблица с 4 полями n_kdk, Date_s, Date_po, NAIM_S в ней хранятся данные, после...

Отобрать уникальные записи
Здравствуйте Есть таблица с полями: id | surname | name | city | phone В таблице могут встречаться несколько записей, где...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru