SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.04.2010 00:50:44

Наталия
Участник
Зарегистрирован: 30.04.2010
Сообщений: 6

Notice: Query was empty

доброго времени суток!
для начала кусочек кода PHP и MYSQL
имеется 2 таблички,

CREATE TABLE `avtomat` (
  `id` int(6) NOT NULL auto_increment,
  `prod` text NOT NULL,
  `amp` varchar(25) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM


CREATE TABLE `icon_flag` (
  `id` int(20) NOT NULL auto_increment,
  `prod1` text NOT NULL,
  `flag` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) TYPE=MyISAM

значения, к примеру, 1я(avtomat):
id     prod   amp
1     omm    3
2     foss    4
3     lane    3
2я(icon_flag)
id    prod1   flag
1     omm     ukr
2     foss      rus
3     lane      eng
теперь запрос(мне нужно, чтоб выводились(ось) значение из icon_flag, колонки flag, соответствующее условию, что avtomat.prod = icon_flag.prod1)
$w=array();
if (!empty($_GET['prod_'])) $w[]="prod='".mysql_real_escape_string($_GET['prod_'])."'"; (данные берутся извне)
if (count($w)) $where="WHERE ".implode(' AND ',$w); else $where='';
$sql="select * from avtomat $where";
   
    $result = mysql_query($sql) or trigger_error(mysql_error().$sql);
    echo "$row['prod']";
                                                                                              до этого момента все работает, а вот дальше..

$sql1="SELECT flag FROM icon_flag WHERE prod1" ==$row['prod'];
$result1 = mysql_query($sql1) or trigger_error(mysql_error().$sql1);
while ($row1 = mysql_fetch_object($result1)) {

echo "$row1['flag']";
}
пишет
Notice: Query was empty in 78
78.$result1 = mysql_query($sql1) or trigger_error(mysql_error().$sql1);
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in 79
79.while ($row1 = mysql_fetch_object($result1)) {

честно, мучалась, но так и не поняла, почему возвращается пустой запрос..
помогите, пожалуйста!!

Неактивен

 

#2 30.04.2010 00:57:42

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Notice: Query was empty

$sql1="SELECT flag FROM icon_flag WHERE prod1" ==$row['prod'];

Вы строку "SELECT flag FROM icon_flag WHERE prod1" сравниваете на равенство с $row['prod']
Результатом будет true или false.

Неактивен

 

#3 30.04.2010 01:00:46

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Notice: Query was empty

Ваша задача решается в один запрос:

SELECT `flag` FROM icon_flag JOIN avtomat ON avtomat.prod = icon_flag.prod1;

Неактивен

 

#4 30.04.2010 01:04:08

Наталия
Участник
Зарегистрирован: 30.04.2010
Сообщений: 6

Re: Notice: Query was empty

vasya написал:

Ваша задача решается в один запрос:

SELECT `flag` FROM icon_flag JOIN avtomat ON avtomat.prod = icon_flag.prod1;

а теперь
Notice: You have an error in your SQL syntax near 'ON avtomat.prod = icon_flag.prod1' at line 1SELECT `flag` FROM icon_flag JOIN avtomat ON avtomat.prod = icon_flag.prod1 in 78

Неактивен

 

#5 30.04.2010 01:13:56

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Notice: Query was empty

А какая у вас версия MySQL?

SELECT `flag` FROM icon_flag, avtomat WHERE avtomat.prod = icon_flag.prod1;

Неактивен

 

#6 30.04.2010 01:14:43

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Notice: Query was empty

Ааа! Не надо объединять таблицы по полю типа text... придумайте какие-то id.
Ну правда. Представьте «доброго» пользователя, который запостит туда текст
«Войны и мира», а Вы будете по этому тексту объединять... правда, не надо...

Что касается синтаксиса — он верный, видимо, что-то в PHP-окружении.

Неактивен

 

#7 30.04.2010 01:23:22

Наталия
Участник
Зарегистрирован: 30.04.2010
Сообщений: 6

Re: Notice: Query was empty

Server version: 3.23.53-max

Неактивен

 

#8 30.04.2010 01:27:54

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Notice: Query was empty

Не знал, что такой раритет еще используется. Все-таки причина оказалась в версии.
"Note that INNER JOIN syntax allows a join_condition only from MySQL 3.23.17 on. The same is true for JOIN and CROSS JOIN only as of MySQL 4.0.11."
http://dev.mysql.com/doc/refman/4.1/en/join.html

Переписанный через WHERE запрос правильно работает?

Ну и конечно совет обновить MySQL.

Неактивен

 

#9 30.04.2010 01:28:30

Наталия
Участник
Зарегистрирован: 30.04.2010
Сообщений: 6

Re: Notice: Query was empty

paulus написал:

Ааа! Не надо объединять таблицы по полю типа text... придумайте какие-то id.
Ну правда. Представьте «доброго» пользователя, который запостит туда текст
«Войны и мира», а Вы будете по этому тексту объединять... правда, не надо...

Что касается синтаксиса — он верный, видимо, что-то в PHP-окружении.

а пользователь туда ничего не сможет внести, он выбирает только то, что есть, в том то и дело, но, я согласна, конечно, лучше через id, возможно так и сделаю, но хотелось бы с этим разобраться, в чем же пробмела. PHP окружение тоже, вроде, пашет и верно написан..

Неактивен

 

#10 30.04.2010 01:40:35

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Notice: Query was empty

Наталия написал:

но хотелось бы с этим разобраться, в чем же пробмела. PHP окружение тоже, вроде, пашет и верно написан..

см пост №8

Немного офф:
Запрос
$sql1="SELECT flag FROM icon_flag WHERE prod1" ==$row['prod'];
правильно написанный будет выглядеть следующим образом

$sql1="SELECT flag FROM icon_flag WHERE prod1='{$row["prod"]}'";

Неактивен

 

#11 30.04.2010 01:52:36

Наталия
Участник
Зарегистрирован: 30.04.2010
Сообщений: 6

Re: Notice: Query was empty

спасибо, ребята, теперь попробую новую версию.. сперва все починить, т.к. все настройки сбились, надеюсь, это не будет проблемой, щас нужно разобраться с Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client и Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in

Неактивен

 

#12 30.04.2010 02:02:51

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Notice: Query was empty

Если возникает ошибка (Client does not support autentification protocol request by server; consider upgrading MySQL client), клиент (то есть ваша программа) не поддерживает требуемый сервером протокол.
Эту ошибку можно исправить, установив пароль старого формата:
SET PASSWORD FOR user@host = OLD_PASSWORD('password');

http://webew.ru/articles/414.webew

Неактивен

 

#13 05.05.2010 15:05:39

Наталия
Участник
Зарегистрирован: 30.04.2010
Сообщений: 6

Re: Notice: Query was empty

переустановила мускул, Апач, РНР... в итогу - пустая страница, ничего вообще не выводит, даже ошибки..

Неактивен

 

#14 05.05.2010 17:12:25

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Notice: Query was empty

Начните с журнала ошибок apache. Потом поглядите, работает ли php. И так далее —
пока не разберетесь с ошибкой.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson