Вообщем есть три 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 - целочисленный параметр, то кавычки вокруг него не нужны.
Вообще-от 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Т.е. два запроса объединяются в один. |
он пройдет, конечно...
Только читать такое (когда в ON-условии фильтр стоит, а в WHERE - правило соединения таблиц) мягко говоря, комфорта не вызывает.
Спустя 33 минуты, 29 секунд (17.03.2011 - 10:10) linker написал(а):
Всегда есть над чем поразмыслить... особенно для ТС
Спустя 1 час, 41 минута, 5 секунд (17.03.2011 - 11:51) Guest написал(а):
не очень понимаю как мне потом получить значение 'id' чтобы вывести его??
через $row['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 не нашел такой записи в таблице.
Значит надо глядеть дамп, и проверять наличие строк в таблице.
А потом кто-то будет жаловаться на то, что его сайт 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>