Список форумов   FAQ   Поиск  
  Вход
Список форумов World Wide Web Web-программирование

MySql error 1064

Все вопросы по web-программированию. Php, Perl, HTML, CSS, JavaScript и др. Установка и настройка CGI скриптов

MySql error 1064

Сообщение Kiberman » Вторник 17 Март 2009 09:53:12

Я вот делаю статистику, и у меня есть два определённых sql запроса, которых нужно выполнить за один раз, например такой, просмотреть таблицу и сразу же очистить её:

select * FROM ulogd;
truncate table ulogd

и в результате получаю ошибку:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '; truncate table ulogd' at line 1

Но когда я этот же запрос просто для проверки пишу в phpMyAdmin, то запрос к базе данных выполняется отлично.
Подскажи, что мне делать, в чом именно у меня может быть ошибка??
Kiberman

 
Сообщения: 468
Зарегистрирован: Вторник 30 Март 2004 12:43:05
Откуда: Новомосковск

Сообщение Romaaa » Вторник 17 Март 2009 10:01:18

Для Kiberman: а точку с запятой пробовал поставить в конце запроса 2го? пхпмайадмин не вредный и много чего может схавать, а вот в скриптах такое часто не прокатывает
Romaaa

 
Сообщения: 7078
Зарегистрирован: Вторник 30 Март 2004 08:15:31
Откуда: 47°59'53N 7°50'26E

Сообщение Kiberman » Вторник 17 Март 2009 18:05:25

Я сейчас на работе сижу и что-то попробовать не как.
Точно не помню, но вроде пробовал так и результат тотже, и до 3-х утра ковырял phpMyAdmin в поисках разницы, так ничего подходящего и не нашел, позже буду ещё пробовать найти в чём именно причина.. В инете тоже искал, нашел две похожих темы, но решения тоже никто не написал.
Kiberman

 
Сообщения: 468
Зарегистрирован: Вторник 30 Март 2004 12:43:05
Откуда: Новомосковск

Сообщение Kiberman » Вторник 17 Март 2009 21:17:17

Для Romaaa:
Всё, я наверное понял в чом прикол. Я расковырял phpMyAdmin в поисках разницы и выяснил, что если через phpMyAdmin посылать запрос, и если он находит разделитель "точка с запятой", то он разделяет один запрос на два отдельных запроса.
---
Так, что прийдётся мне другое решение придумывать для реализации своего скрипта...
Kiberman

 
Сообщения: 468
Зарегистрирован: Вторник 30 Март 2004 12:43:05
Откуда: Новомосковск

Сообщение Ukraina » Вторник 17 Март 2009 23:49:51

Для Kiberman:
опиши более полно что нужно сделать, может это совсем проще можно сделать
Ukraina

 
Сообщения: 1769
Зарегистрирован: Среда 16 Апрель 2008 13:37:20

Сообщение Kiberman » Среда 18 Март 2009 01:00:34

Для Ukraina: Да? Ну попробуй это проще сделать, там уже и так самый простой вариант

select sum(ip_in), sum(ip_out), u_ip, s_ip, log_date, oob_time_sec
from
(
SELECT oob_time_sec,
if(INET_NTOA(ip_saddr) like '10.0.0.%', ip_totlen, 0) as ip_out,
if(INET_NTOA(ip_daddr) like '10.0.0.%', ip_totlen, 0) as ip_in,
if (INET_NTOA(ip_saddr) like '10.0.0.%', INET_NTOA(ip_saddr), INET_NTOA(ip_daddr)) as u_ip,
if (INET_NTOA(ip_daddr) like '10.0.0.%', INET_NTOA(ip_saddr), INET_NTOA(ip_daddr)) as s_ip,
DATE(from_unixtime(oob_time_sec)) as log_date,
TIME(from_unixtime(oob_time_sec)) as log_time
FROM ulogd
where oob_time_sec > UNIX_TIMESTAMP('2009-03-01')
and oob_time_sec < UNIX_TIMESTAMP('2009-03-31')
)a
group by k, log_date;

delete
from ulogd
where oob_time_sec > UNIX_TIMESTAMP('2009-03-01') and
oob_time_sec < UNIX_TIMESTAMP('2009-03-31')
Kiberman

 
Сообщения: 468
Зарегистрирован: Вторник 30 Март 2004 12:43:05
Откуда: Новомосковск

Сообщение Ukraina » Среда 18 Март 2009 08:36:14

нет, я спрашивал не изнутри мускла, а взагали..объясни что за данные лежат в таблицах и какой результат ты хочешь поиметь
Ukraina

 
Сообщения: 1769
Зарегистрирован: Среда 16 Апрель 2008 13:37:20

Сообщение Kiberman » Среда 18 Март 2009 09:48:03

я уже придумал решение как его сделать, наверное буду через LIMIT работать. Просто в таблицу за 1 секунду очень много информации сыпится и если делать к примеру как я написал
select * FROM ulogd;
truncate table ulogd;
то можно потерять много информации пока будет обрабатыватся весь запрос, а через limit будет иначе
Kiberman

 
Сообщения: 468
Зарегистрирован: Вторник 30 Март 2004 12:43:05
Откуда: Новомосковск

Сообщение Kiberman » Четверг 19 Март 2009 22:57:36

Теперь ещё нужна помощь от наших умных людей, если такие имеются
Итак в базе данных есть три или более записи типа

id--|--var

1--|--ffffffff
2--|--c0a8ffff
3--|--0a0000ff

вот мне нужно найти с базы это c0a8ffff то мне нужно получить запись с id = 2, а если искомая запись не равна тем которая в базе данных, например такая c3ffffff то мне нужно, что бы вывелась запись с id = 1

Каким образом это можно получить? Я уже второй день ломаю над этим голову и пока подходящего решения не пришло в мозг.

p.s.: "--|--" его в базе нету, это я так написал типа как разделитель полей, что бы понятней было где id а где var
Kiberman

 
Сообщения: 468
Зарегистрирован: Вторник 30 Март 2004 12:43:05
Откуда: Новомосковск

Сообщение Kiberman » Пятница 20 Март 2009 00:52:10

всё, можно идти спать, я снова нашел решение данной проблемы, кому интерестно приведу sql запрос

SELECT * FROM table WHERE IF(var IN ('c0a80cde', 'c0a80cff', 'c0a8ffff', 'c0ffffff'),true,var = 'ffffffff' ) ORDER BY id DESC

для этого нужно, что бы ffffffff в базе было id = 1, тоесть стоял первым, а все остальные записи уже после него идут, а при поиске нужно таблицу читать задом наперёд, и если данные которые мы ищем не совпадают с таблицей то выведется ряд с номером id = 1

Если вы спросите, зачем так нужно было заморачиватся, ведь можно было бы просто php скриптом написать, что если в базе такого нету то просто вывести var = 'ffffffff', но я объясню, что привёл не весь sql запрос, у меня в этом одном запросе сразу связанно 4 таблицы в одну, и этот id = 1 должен сопоставится с другими таблицами и вывести их результат..
Вот такая интерестная штука, это программирование...

Добавлено спустя 8 минут 37 секунд:

Кстати елси нужно, то могу написать уникальную примочку к этому форуму, так как очень хорошо знаю его структуру!
Kiberman

 
Сообщения: 468
Зарегистрирован: Вторник 30 Март 2004 12:43:05
Откуда: Новомосковск


Вернуться в Web-программирование

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron