Не отрабатывается запрос, если в поле вводится что-либо, отличное от цифр! HELP!

  • Автор темы Domingo
  • Дата начала

Domingo

Guest
Не отрабатывается запрос, если в поле вводится что-либо, отличное от цифр! HELP!

Связка WIN2003 SERVER + Yaffil + PHP 4.3.6 + Apache 1.3*
Есть запрос:
PHP:
<?php
if (!$searchtype || !$searchterm)
  {
     echo "!";
     exit;
  }
  $searchtype = addslashes($searchtype);
  $searchterm = addslashes($searchterm);
$db = ibase_connect("C:/DB/bases/test2004.gdb", "SYSDBA", "masterkey");
$result = ibase_query("SELECT * FROM FACT where ".$searchtype." like '%".$searchterm."%'",$db);
Так вот, если при заполнении формы в поле searchterm вводится числовое значение - всё ОК! Если кириллические символы или "дата-время", запрос не отрабатывается.
Нюхом чую, что дело в кодировке, ведь запрос из EMS IB Manager-a select * from fact where NAME like '%текущий%'
работает нормально. У самой базы кодировка WIN-1251.
Подскажите, как побороть эту заразу?
 

fixxxer

К.О.
Партнер клуба
echo "<textarea>". "SELECT * FROM FACT where ".$searchtype." like '%".$searchterm."%'" . "</textarea>";
 

Bocha

Guest
Скрипты и ISQL

Собственно, все то же самое. Т.е. кодировку символов нужно указать перед коннектом или созданием базы данных. Буквально - в начале скрипта написать:

SET NAMES WIN1251;

Эта же команда выдается интерактивно перед коннектом к БД через утилиту командной строки ISQL.

может поможет
 

Domingo

Guest
Автор оригинала: Bocha
Скрипты и ISQL

Собственно, все то же самое. Т.е. кодировку символов нужно указать перед коннектом или созданием базы данных. Буквально - в начале скрипта написать:

SET NAMES WIN1251;

Эта же команда выдается интерактивно перед коннектом к БД через утилиту командной строки ISQL.

может поможет
Номер не проходит, пробовал уже!:-(
Я же коннекчусь к базе из PHP скрипта!
 

Bocha

Guest
Автор оригинала: Domingo
Номер не проходит, пробовал уже!:-(
Я же коннекчусь к базе из PHP скрипта!
То, что fixxxer предлагал, делал? И если делал, то каков рез-тат? А если не делал, то сделай и скажи рез-тат
 

Domingo

Guest
Автор оригинала: Bocha
То, что fixxxer предлагал, делал? И если делал, то каков рез-тат? А если не делал, то сделай и скажи рез-тат
Делал - не работает.:-(
 

Bocha

Guest
что именно не работает? результат покажи
 

Domingo

Guest
Автор оригинала: Bocha
что именно не работает? результат покажи
Как я тебе покажу?
Страница пустая - значит скрипт не отработал!:-(
Может я чё-то не догоняю?
Мож не правильно строки
$result = ibase_query("SELECT * FROM FACT where ".$searchtype." like '%".$searchterm."%'",$db);
и
"<textarea>". "SELECT * FROM FACT where ".$searchtype." like '%".$searchterm."%'" . "</textarea>";
совокупляю?
Мож кто наставит на путь истинный?
 

Bocha

Guest
echo "<textarea>". "SELECT * FROM FACT where ".$searchtype." like '%".$searchterm."%'" . "</textarea>"; вот эта строка должна была вывести тебе твой SQL запрос в том виде, в котором он передается на выполнение. Если тебе ничего не вывелось, разбирайся в своем скрипте. У тебя до запроса дело не доходит
 

flipper

Guest
Re: Не отрабатывается запрос, если в поле вводится что-либо, отличное от цифр! HELP!

Автор оригинала: Domingo
Связка WIN2003 SERVER + Yaffil + PHP 4.3.6 + Apache 1.3*
Есть запрос:
PHP:
<?php
if (!$searchtype || !$searchterm)
  {
     echo "!";
     exit;
  }
  $searchtype = addslashes($searchtype);
  $searchterm = addslashes($searchterm);
$db = ibase_connect("C:/DB/bases/test2004.gdb", "SYSDBA", "masterkey");
$result = ibase_query("SELECT * FROM FACT where ".$searchtype." like '%".$searchterm."%'",$db);
Так вот, если при заполнении формы в поле searchterm вводится числовое значение - всё ОК! Если кириллические символы или "дата-время", запрос не отрабатывается.
Нюхом чую, что дело в кодировке, ведь запрос из EMS IB Manager-a select * from fact where NAME like '%текущий%'
работает нормально. У самой базы кодировка WIN-1251.
Подскажите, как побороть эту заразу?
символы только кириллические не проходят или...?
если только кириллица не проходит то, посмотри на описание функции ibase_connect

resource ibase_connect ( string database [, string username [, string password [, string charset [, int buffers [, int dialect [, string role]]]]]])

параметр charset...

примерно так для Interbase/Firebird :
PHP:
ibase_connect ('localhost:/usr/db/db.gdb', 'SYSDBA', 'masterkey', 'WIN1251', '0', '3' ) ;
 

Domingo

Guest
Re: Re: Не отрабатывается запрос, если в поле вводится что-либо, отличное от цифр! HELP!

Спасибо. Работает!
 
Сверху