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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Приватные сообщения

Сообщения:  [1-10]   [11-16] 

 
 автор: cheops   (05.10.2008 в 11:03)   письмо автору
 
   для: BinLaden   (05.10.2008 в 10:41)
 

Один раз было дело... не помню что за приложение было, но была необходимость очень часто вставлять и удалять записи. Ну а вообще да, в подавляющем большинстве случаев вполне достаточно типа INT.

  Ответить  
 
 автор: BinLaden   (05.10.2008 в 10:41)   письмо автору
 
   для: cheops   (04.10.2008 в 19:22)
 

> Используйте BIGINT <...> Я по крайней мере ещё не разу не сталкивался с ситуацией, когда он исчерпывался.

А что, Вы встречались с ситуацией, когда INT не хватало? :)

  Ответить  
 
 автор: sl1p   (04.10.2008 в 19:54)   письмо автору
 
   для: cheops   (04.10.2008 в 19:22)
 

так и сделал:) будем надеяться на лучшее :D

  Ответить  
 
 автор: cheops   (04.10.2008 в 19:22)   письмо автору
 
   для: sl1p   (04.10.2008 в 17:19)
 

>Хм, спасибо.. я просто босюь этих авто_инкрементов ибо поле типа инт заканчивается когдато.. настораживает немного)
Используйте BIGINT - его исчерпать практически нереально. Я по крайней мере ещё не разу не сталкивался с ситуацией, когда он исчерпывался.

  Ответить  
 
 автор: sl1p   (04.10.2008 в 17:19)   письмо автору
 
   для: cheops   (04.10.2008 в 13:42)
 

Хм, спасибо.. я просто босюь этих авто_инкрементов ибо поле типа инт заканчивается когдато.. настораживает немного)

хух полегчало) сделал наконец) спасибо ещё раз)

  Ответить  
 
 автор: cheops   (04.10.2008 в 13:42)   письмо автору
 
   для: sl1p   (04.10.2008 в 12:31)
 

Лучше введите сурогатный первичный ключ id (снабдив его атрибутом AUTO_INCREMENT), а ts сделайте обычным полем - иначе у вас в одно и то же время нельзя будет отправлять разные сообщения - только одно сообщение в секунду. Для добавления двух записей можно использовать многострочный INSERT
<?php
  $query 
"INSERT INTO `private` (`id`, `ts` , `owner_nick_id` , `whom_nick_id` , `from_nick_id` , `msg` ) 
VALUES(NULL, '
$ts','$whom_id','$whom_id','$from_id','$msg'), (NULL, '$ts','$whom_id','$whom_id','$from_id','$msg')";
?>

  Ответить  
 
 автор: sl1p   (04.10.2008 в 12:31)   письмо автору
 
   для: sl1p   (04.10.2008 в 12:09)
 

упс забыл спросить:)
возможно ли както добавить 2 записи одним запросом?..

делаю так:
mysql_query("INSERT INTO `private` ( `ts` , `owner_nick_id` , `whom_nick_id` , `from_nick_id` , `msg` ) VALUES('$ts','$whom_id','$whom_id','$from_id','$msg')");
mysql_query("INSERT INTO `private` ( `ts` , `owner_nick_id` , `whom_nick_id` , `from_nick_id` , `msg` ) VALUES('$ts','$from_id','$whom_id','$from_id','$msg')");

не пишет изза одинакового поля ts /primary key
.. как вылечить?)

  Ответить  
 
 автор: sl1p   (04.10.2008 в 12:09)   письмо автору
 
   для: sl1p   (02.10.2008 в 02:31)
 

всем огромнейшее спасибо!:)

  Ответить  
 
 автор: Trianon   (04.10.2008 в 11:21)   письмо автору
 
   для: cheops   (04.10.2008 в 10:52)
 

Тогда уж лучше сосчитать границу средствами php
$range = strtotime('-1 month');
$sql = "DELETE FROM private WHERE nick_id = '$id' AND ts < $range";

  Ответить  
 
 автор: cheops   (04.10.2008 в 10:52)   письмо автору
 
   для: sl1p   (04.10.2008 в 08:54)
 

>Хм идея в принципе интересная, но это есть чат и такого будет не мало*2..
>не загнётся ли бд?)
Да не должна, иначе у вас двухкратный скачок посещаемости будет приводить к загибу :))) Обычно влияет, если увеличение объема или нагрузки возрастает на порядки, а в разы - это не страшно.

>и ещё если цепляться за ваш вариант,то как сравнить 2 таймстампа не переводя его в "понимаемую" дату...?)Тоесть как узнать между ними нужную мне разницу?
Здесь удобно воспользоваться функцией FROM_UNIXTIME(), которая переводит время из TIMESTAMP-формата в MySQL-представление. Например, следующий запрос удаляет все записи, которым больше 1 месяца
DELETE FROM private 
WHERE nick_id = '$id' AND FROM_UNIXTIME(ts) < NOW() - INTERVAL 1 MONTH

  Ответить  

Сообщения:  [1-10]   [11-16] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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