[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с SQL запросом к базе
Гость_Светлана
Здравствуйте. Проблема такая:

Вообщем есть три SQL запроса, условие WHERE в которых подставляется одно из другого.

$sql1 = 'SELECT `name_pr` FROM `main`'.
" WHERE `id`='" . $_REQUEST['id']."'"; // id - получаем
$result1 = mysql_query($sql1,$db);
$row1 = mysql_fetch_assoc($result1);


$sql2 = 'SELECT `id` FROM `type_of_product` '.
'WHERE `name_pr` = "' .$row1['name_pr'].'"'; //параметр выводиться правильно

$result2 = mysql_query($sql2,$db);
$row2 = mysql_fetch_assoc($result2);

$log->WriteLogMessage($row2['id']); // здесь в лог записывается null, хотя должно быть числовое значение



если sql2 записать в лог и выполнить его в mysqlAdmin запрос прекрасно срабатывает.
SELECT `id` FROM `type_of_product` WHERE `name_pr` = "ЩСН"








Спустя 2 минуты (17.03.2011 - 06:05) Гость_Светлана написал(а):
мне нужно получить параметр $row2['id'] чтобы сформировать следующий запрос. Подскажите в чем ошибка пожалуйста

Спустя 3 часа, 3 минуты, 9 секунд (17.03.2011 - 09:08) Trianon написал(а):
Оператор SET NAMES выполняется при подключении?

Вообще-от SQL-строки так не формируют.
нутро строк должно быть обработано mysql_real_escape_string().

Опять же, если id - целочисленный параметр, то кавычки вокруг него не нужны.

Спустя 7 минут, 36 секунд (17.03.2011 - 09:16) linker написал(а):
SELECT 
`type_of_product`.`id`
FROM
`type_of_product`
INNER JOIN `main` ON
`main`.`id`='" . (integer)$_REQUEST['id'] . "'
WHERE
`type_of_product`.`name_pr` = `main`.`name_pr`
Т.е. два запроса объединяются в один.

Спустя 20 минут, 40 секунд (17.03.2011 - 09:36) Trianon написал(а):
Цитата (linker @ 17.03.2011 - 09:16)
SELECT 
`type_of_product`.`id`
FROM
`type_of_product`
INNER JOIN `main` ON
`main`.`id`='" . (integer)$_REQUEST['id'] . "'
WHERE
`type_of_product`.`name_pr` = `main`.`name_pr`
Т.е. два запроса объединяются в один.

он пройдет, конечно...
Только читать такое (когда в ON-условии фильтр стоит, а в WHERE - правило соединения таблиц) мягко говоря, комфорта не вызывает.

Спустя 33 минуты, 29 секунд (17.03.2011 - 10:10) linker написал(а):
Всегда есть над чем поразмыслить... особенно для ТС

Спустя 1 час, 41 минута, 5 секунд (17.03.2011 - 11:51) Guest написал(а):
не очень понимаю как мне потом получить значение 'id' чтобы вывести его??

через $row['id'] проканает??

Спустя 2 минуты, 14 секунд (17.03.2011 - 11:53) Guest написал(а):
Цитата (Trianon @ 17.03.2011 - 06:08)
Оператор SET NAMES выполняется при подключении?

Вообще-от SQL-строки так не формируют.
нутро строк должно быть обработано mysql_real_escape_string().

Опять же, если id - целочисленный параметр, то кавычки вокруг него не нужны.

Set names выполняеться


mysql_real_escape_string(). впервые вижу если честно))) но и без этого всегда все прекрасно работало. сейчас посмотрю что за зверь такой

а по поводу кавычек так ему пофиг что с ними что без них, ни на что не реагирует. в данный момент без кавычек стоит



Спустя 42 минуты, 47 секунд (17.03.2011 - 12:36) Trianon написал(а):
Работало конечно, и работает в большинстве случаев.
А потом кто-то будет жаловаться на то, что его сайт SQL-инъекцией взламывают.


По сути вопроса.
Я бы вывел print_r($row2);
если там false вместо строки - значит SQL не нашел такой записи в таблице.
Значит надо глядеть дамп, и проверять наличие строк в таблице.


Спустя 6 дней, 20 часов, 6 минут, 30 секунд (24.03.2011 - 08:43) Гость_Светлана написал(а):
Цитата (Trianon @ 17.03.2011 - 09:36)
Работало конечно, и работает в большинстве случаев.
А потом кто-то будет жаловаться на то, что его сайт SQL-инъекцией взламывают.


По сути вопроса.
Я бы вывел print_r($row2);
если там false вместо строки - значит SQL не нашел такой записи в таблице.
Значит надо глядеть дамп, и проверять наличие строк в таблице.

В том то и дело, у меня же все логируется. Запрос проверяю в MySQL Admin, он записи находит. и они там точно есть!! а $row2['id'] в лог записывается как <null>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.