Задавайте вопросы, мы ответим
Вы не зашли.
доброго времени суток!
для начала кусочек кода PHP и MYSQL
имеется 2 таблички,
1я
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
2я
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)) {
честно, мучалась, но так и не поняла, почему возвращается пустой запрос..
помогите, пожалуйста!!
Неактивен
$sql1="SELECT flag FROM icon_flag WHERE prod1" ==$row['prod'];
Вы строку "SELECT flag FROM icon_flag WHERE prod1" сравниваете на равенство с $row['prod']
Результатом будет true или false.
Неактивен
Ваша задача решается в один запрос:
Неактивен
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
Неактивен
А какая у вас версия MySQL?
SELECT `flag` FROM icon_flag, avtomat WHERE avtomat.prod = icon_flag.prod1;
Неактивен
Ааа! Не надо объединять таблицы по полю типа text... придумайте какие-то id.
Ну правда. Представьте «доброго» пользователя, который запостит туда текст
«Войны и мира», а Вы будете по этому тексту объединять... правда, не надо...
Что касается синтаксиса — он верный, видимо, что-то в PHP-окружении.
Неактивен
Server version: 3.23.53-max
Неактивен
Не знал, что такой раритет еще используется. Все-таки причина оказалась в версии.
"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.
Неактивен
paulus написал:
Ааа! Не надо объединять таблицы по полю типа text... придумайте какие-то id.
Ну правда. Представьте «доброго» пользователя, который запостит туда текст
«Войны и мира», а Вы будете по этому тексту объединять... правда, не надо...
Что касается синтаксиса — он верный, видимо, что-то в PHP-окружении.
а пользователь туда ничего не сможет внести, он выбирает только то, что есть, в том то и дело, но, я согласна, конечно, лучше через id, возможно так и сделаю, но хотелось бы с этим разобраться, в чем же пробмела. PHP окружение тоже, вроде, пашет и верно написан..
Неактивен
Наталия написал:
но хотелось бы с этим разобраться, в чем же пробмела. PHP окружение тоже, вроде, пашет и верно написан..
см пост №8
Немного офф:
Запрос
$sql1="SELECT flag FROM icon_flag WHERE prod1" ==$row['prod'];
правильно написанный будет выглядеть следующим образом
$sql1="SELECT flag FROM icon_flag WHERE prod1='{$row["prod"]}'";
Неактивен
спасибо, ребята, теперь попробую новую версию.. сперва все починить, т.к. все настройки сбились, надеюсь, это не будет проблемой, щас нужно разобраться с 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
Неактивен
Если возникает ошибка (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
Неактивен
переустановила мускул, Апач, РНР... в итогу - пустая страница, ничего вообще не выводит, даже ошибки..
Неактивен
Начните с журнала ошибок apache. Потом поглядите, работает ли php. И так далее —
пока не разберетесь с ошибкой.
Неактивен