Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Программирование > Базы данных

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 03.06.2002, 22:35
comrade вне форума Посмотреть профиль Отправить личное сообщение для comrade Найти все сообщения от comrade
  № 1  
comrade
 
Аватар для comrade

Регистрация: Mar 2001
Сообщений: 271
По умолчанию primary key или unique?

Товарищи!
у меня тут что то не то.
крейзи прошу не извращаться нало мной, окей?
у меня вот есть табла - а в ней два поля праймари кии!
(то есть NULL в них писать теоретически низзя).
но ведь что странно - когда у меня пхп шный скрипт посылает запрос в эту таблицу(причем эти поля у меня заполняются из текстбоксов - ну input type=text) :
1. запись добавляется преспокойно, если один из текстбоксов пустой при нажатии сабмита
2. запись не добавляется ток тогда, когда в таблице уже есть АНАЛОГИЧНАЯ запись.

могу код показать... если надо...
__________________
Есть человек - есть проблемы,
нет человека - нет проблем.
И.В.Сталин.

Старый 04.06.2002, 15:00
Самурай вне форума Посмотреть профиль Отправить личное сообщение для Самурай Найти все сообщения от Самурай
  № 2  
Самурай
Ветеран форума

Регистрация: Aug 2001
Адрес: /kiev.ua/butuzov
Сообщений: 3,045
Отправить сообщение для Самурай с помощью ICQ
если можно, то выложи...
__________________
...

Старый 05.06.2002, 07:54
comrade вне форума Посмотреть профиль Отправить личное сообщение для comrade Найти все сообщения от comrade
  № 3  
comrade
 
Аватар для comrade

Регистрация: Mar 2001
Сообщений: 271
mysql> describe u_table;
+------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| user_name | varchar(20) | | PRI | | |
| user_sname | varchar(20) | | PRI | | |
| user_ra | tinyint(4) | YES | | NULL | |
| user_wa | tinyint(4) | YES | | NULL | |
| user_st | datetime | YES | | NULL | |
| user_et | datetime | YES | | NULL | |
| user_count | smallint(6) | YES | | 0 | |
+------------+-------------+------+-----+---------+-------+
7 rows in set (0.22 sec)

mysql> select * from u_table;
+------------+------------+---------+---------+---------------------+---------------------+------------+
| user_name | user_sname | user_ra | user_wa | user_st | user_et | user_count |
+------------+------------+---------+---------+---------------------+---------------------+------------+
| | Пупкин | 0 | 0 | 2002-06-03 12:22:32 | 0000-00-00 00:00:00 | 0 |
| Василий | | 0 | 0 | 2002-06-03 12:22:17 | 0000-00-00 00:00:00 | 0 |
| Василий | Пупкин | 0 | 0 | 2002-06-03 12:22:10 | 0000-00-00 00:00:00 | 0 |
| ВАСИЛИЙ | ПУПКИН | 0 | 0 | 2002-06-04 11:55:02 | 0000-00-00 00:00:00 | 0 |
| dd | dddd | 0 | 0 | 2002-06-04 12:10:29 | 0000-00-00 00:00:00 | 0 |
| 1111 | 111 | 0 | 0 | 2002-06-04 12:12:24 | 0000-00-00 00:00:00 | 0 |
+------------+------------+---------+---------+---------------------+---------------------+------------+
6 rows in set (0.38 sec)

mysql> exit;

как видишь - вставляются пустые значения. такого быть не должно. сообщние о "дубляже" появляется лишь тогда, когда имя и фамилия юзера сталкиваются с такими же, но уже внесенными в базу. однако если просто внести фамилию без имени или наоборот - база ЛЕГКО апдейтится... что такое?

а вот собственно скрипты:
сначала юзер попадает сюды:

(welcome.php)
<html>

<body bgcolor=black>

<font color=white>

<form method=POST action=user_stat.php>

<table border=0>

<tr><td><font color=white>Введите имя:</font></td><td><input type=text name=bax_un></td></tr>

<tr><td><font color=white>Введите фамилию:</font></td><td><input type=text name=bax_usn></td></tr>

<?php
// bax_un - это имя юзера
// bax_usn - фамилия
//echo strtotime ("now");
?>

</table>

<input type=submit>

</form>

</font>

</body>

</html>
(end welcome.php)


потом постом посылаем в этот скрипт:
(user_stat.php)

<?php
$query="insert into u_table VALUES ('$bax_un','$bax_usn','','',now(),'','')";

$link = mysql_connect("server", "root", "") or die("Could not connect");

mysql_select_db("bax") or die("Could not select database");

mysql_query($query)||die(mysql_errno().": ".mysql_error()."<BR>");

//mysql_result($result);

mysql_close($link);

header ("Location: http://server/!work!/auth.php");
?>

(end user_stat.php)

что за grabbли?

__________________
Есть человек - есть проблемы,
нет человека - нет проблем.
И.В.Сталин.


Последний раз редактировалось comrade; 05.06.2002 в 07:56.
Старый 05.06.2002, 08:53
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 4  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
По умолчанию Re: primary key или unique?

Цитата:
Оригинал написал(а) comrade
то есть NULL в них писать теоретически низзя
Незаполненное текстовое поле -- это не null, а пустая строка. Так что никакого противоречия нет.

Общее правило: ЛЮБЫЕ данные пользователя перед передачей в БД должны пройти проверку. Так что просто на уровне PHP отсекай попытку вставить некорректные данные.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 05.06.2002, 08:55
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 5  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Кстати, мсье не пробовал -- в шутку -- ввести в текстовое поле нечто, содержащее одинарный апостроф?
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 06.06.2002, 00:04
comrade вне форума Посмотреть профиль Отправить личное сообщение для comrade Найти все сообщения от comrade
  № 6  
comrade
 
Аватар для comrade

Регистрация: Mar 2001
Сообщений: 271
Крейзи, а в мускуле нет такого поля типа - рекваред?
ну то есть, чтобы обязательно оно должно было содержать какие-то данные?
required с англицкого обязательный

а насчет того, что придется на уровне пхп все делать я уже смирился...

и завтра попробую, что это там произойдет с твоим апострофом...
надеюсь не повалю мускул...
а то и так гемора хватает!
__________________
Есть человек - есть проблемы,
нет человека - нет проблем.
И.В.Сталин.

Старый 06.06.2002, 03:54
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 7  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Оригинал написал(а) comrade
Крейзи, а в мускуле нет такого поля типа - рекваред?
ну то есть, чтобы обязательно оно должно было содержать какие-то данные?
Пустая строка -- в отличие от NULL -- как раз и есть "какие-то данные".
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 12.06.2002, 06:37
comrade вне форума Посмотреть профиль Отправить личное сообщение для comrade Найти все сообщения от comrade
  № 8  
comrade
 
Аватар для comrade

Регистрация: Mar 2001
Сообщений: 271
Ёлки... действительно с этим апострофом выскакивает ПАРСИНГ ЕРРОР...
не все так просто..
а может это в пхп надо влкючить маджик_квотс, а?

тут блин мне еще задачку накинули - оказывается мой интерфейс для заполнения базы "слишком скудный".
пришлось теперь извращаться со всякими слоями и прочим, но уже в явескрипт.
теперь гемор с этой передачей параметров из Жабыскрипт в пхп, но к счастью есть дримвейвер с дебугерром JS с почти полным или полным описанием ВСЕГО DOM! это же супер!
__________________
Есть человек - есть проблемы,
нет человека - нет проблем.
И.В.Сталин.

Старый 12.06.2002, 07:22
Crazy вне форума Посмотреть профиль Отправить личное сообщение для Crazy Посетить домашнюю страницу Crazy Найти все сообщения от Crazy
  № 9  
Crazy
[+1 23.05.11]
 
Аватар для Crazy

Регистрация: Dec 2001
Сообщений: 4,159
Цитата:
Оригинал написал(а) comrade
а может это в пхп надо влкючить маджик_квотс, а?[/b]
Лично я предпочитаю квотить явным обращением к соответствующей функции.
__________________
GIT d++ s++:++ a C++$ UB++ P++ L+ E+ W+++ N++ w++ O+ M V- t-- 5-- X+ R+++ tv- b+++ D++

Старый 14.06.2002, 06:27
comrade вне форума Посмотреть профиль Отправить личное сообщение для comrade Найти все сообщения от comrade
  № 10  
comrade
 
Аватар для comrade

Регистрация: Mar 2001
Сообщений: 271
Crazy, а нельзя ли привести кусочек кода именно насчет этой функции, а?
__________________
Есть человек - есть проблемы,
нет человека - нет проблем.
И.В.Сталин.

Создать новую тему   Часовой пояс GMT +4, время: 10:43.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 10:43.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.