передача значения переменной а не саму переменную

Статус
В этой теме нельзя размещать новые ответы.

Alexbank

Guest
передача значения переменной а не саму переменную

проблемма в следующем есть запрос в котором мне нужно указать само значение переменной а не ее саму вот запрос:
SELECT * FROM cq_docs where '$doc_date' BETWEEN DOC_PRINT_START_DATE and nvl(DOC_PRINT_END_DATE,TO_DATE('01-01-2999','DD/MM/YYYY' ))) and ITM_ART = '$int'"

$doc_date-тоесть как ее преобрзовать в строку!
 

matross

Новичок
Re: передача значения переменной а не саму переменную

Автор оригинала: Alexbank
проблемма в следующем есть запрос в котором мне нужно указать само значение переменной а не ее саму вот запрос:
SELECT * FROM cq_docs where '$doc_date' BETWEEN DOC_PRINT_START_DATE and nvl(DOC_PRINT_END_DATE,TO_DATE('01-01-2999','DD/MM/YYYY' ))) and ITM_ART = '$int'"

$doc_date-тоесть как ее преобрзовать в строку!
Да-к он и так тебе передаст значение этой переменной, что ты хочешь, мона по конкретней???
 

Alexbank

Guest
Re: Re: передача значения переменной а не саму переменную

Автор оригинала: matross
Да-к он и так тебе передаст значение этой переменной, что ты хочешь, мона по конкретней???
Короче говря мне нужно строку передать а не саму переменную, тоесть занчение переменной равно например
$doc_date='25-JUN-2007';
тоесть если буде стоять сама переменная ничего не работае а если ее занчения то все ок
PHP:
SELECT * FROM mfgwh.cq_docs where $doc_date BETWEEN DOC_PRINT_START_DATE and nvl(DOC_PRINT_END_DATE,TO_DATE('01-01-2999','DD/MM/YYYY' ))) and ITM_ART = '$int'"); ---- не работает 
SELECT * FROM mfgwh.cq_docs where '25-JUN-2007' BETWEEN DOC_PRINT_START_DATE and nvl(DOC_PRINT_END_DATE,TO_DATE('01-01-2999','DD/MM/YYYY' ))) and ITM_ART = '$int'"); ---- а вот так работает !
 

AHTIXPICT

Новичок
Нужно наверное прочитать про кавычки одинарные и двойные и что они делают если в них заключить переменную
И что нужно делать если необходимо заескейпить кавычку
 

Alexbank

Guest
Автор оригинала: AHTIXPICT
Нужно наверное прочитать про кавычки одинарные и двойные и что они делают если в них заключить переменную
И что нужно делать если необходимо заескейпить кавычку
да не то это помоему !
 

regi

Новичок
используй символ . :)
наподобии "select .... WHERE id=".$id." ... ";
 

AHTIXPICT

Новичок
Судя по запросу из твоего первого поста - именно то.

Попробуй так:

"SELECT * FROM cq_docs where '".$doc_date."' BETWEEN DOC_PRINT_START_DATE and nvl(DOC_PRINT_END_DATE,TO_DATE('01-01-2999','DD/MM/YYYY' ))) and ITM_ART = '".$int."'"
 

Alexbank

Guest
Автор оригинала: AHTIXPICT
Судя по запросу из твоего первого поста - именно то.

Попробуй так:

"SELECT * FROM cq_docs where '".$doc_date."' BETWEEN DOC_PRINT_START_DATE and nvl(DOC_PRINT_END_DATE,TO_DATE('01-01-2999','DD/MM/YYYY' ))) and ITM_ART = '".$int."'"
так уже пробовал эффекта ноль !
 

AHTIXPICT

Новичок
А как насчет сделать вывод в браузер и посмотреть что с запросом не так
PHP:
$query = "SELECT * FROM cq_docs where '".$doc_date."' BETWEEN DOC_PRINT_START_DATE and nvl(DOC_PRINT_END_DATE,TO_DATE('01-01-2999','DD/MM/YYYY' ))) and ITM_ART = '".$int."'";
echo $query;
 

Flexx

Guest
Оффтоп: блин, ну как можно вообще обращаться в форум с такими вопросами?
 

Alexbank

Guest
PHP:
SELECT * FROM cq_docs where ('07-MAY-05' BETWEEN DOC_PRINT_START_DATE and nvl(DOC_PRINT_END_DATE,TO_DATE('01-01-2999','DD/MM/YYYY' ))) and ITM_ART = ''
вот что он выводит странно последнюю переменную не дописывает !
 

Alexbank

Guest
Блин нашел в чем касяк Если убрать например одно из условий например
PHP:
and ITM_ART = '$int'
или на оборот то все работает ! Кстати база Oracle ! как эту проблемку можно решить !
 

AHTIXPICT

Новичок
блин ё-маё!!!
Подумать головой.
Тебе уже наотвечали здесь все что можно
 

Lamer_Scorp

Guest
Alexbank


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

Ты ищи проблему почему у тебя в сценарий переменная не передаётся. А не на запрос и базу греши.
 

Alexbank

Guest
Автор оригинала: Lamer_Scorp
Alexbank
какая разница какая база, елси тут дело в том что ты пытаешься сравнить пустое значение (тип строковый) с полем, тип которого числовой и не может быть равен "пустоте".

Ты ищи проблему почему у тебя в сценарий переменная не передаётся. А не на запрос и базу греши.
Вообще на сколько я понял сложилась ситуация такая
я запрос заганяю в переменную и потом уже эту переменную обрабатываю вот так
PHP:
$result = $this->db->many_rows($q="SELECT * FROM cq_docs where  ('$doc_date'  BETWEEN DOC_PRINT_START_DATE and nvl(DOC_PRINT_END_DATE,TO_DATE('01-01-2999','DD/MM/YYYY' ))) and ITM_ART = '$int'");
Но почему то он не работае хотя ели убрать одно из условий после where все начинает работать !
 

Фанат

oncle terrible
Команда форума
выведи свой запрос на экран хотя бы.
чтобы глазами посмотреть, чучело
 

Alexbank

Guest
Автор оригинала: Фанат
выведи свой запрос на экран хотя бы.
чтобы глазами посмотреть, чучело
Да выводил чуть выше выкидывал уже результат, он не дописывает пол запроса а че делать то !
 

Lamer_Scorp

Guest
Alexbank



на тык проверь, чудо ты в перьях, откуда берётся переменная, которая передаёт значение ПОЛ. раз ты выводишь запрос, и там место переменной пол пустое, то и ищи причину, почему оно пустое. Это не запрос же тебе убивает переменную. Это ты её криво передаёшь. Вернее сказать НЕ ПЕРЕДАЁШЬ.

Выясни как ты получаешь переменную $int, откуда, как, и присваивается ли её какое-то значение перед тем как ты это значение в запрос вписываешь.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху