Проблем с Interbase, php и апострофи
3 отговора
228 прегледа
Проблем с Interbase, php и апострофи
Здравейте!
Имам проблеми с формулирането на query за InterBase, съдържащи текст с апостроф ( например "Val d'Aosta"). Ето го и query-to (примерно):
SELECT * FROM STRUMENTI WHERE SEZIONE containing "Contrabbasso" and
SOTTO_SEZIONE containing "Val d'Aosta"
php кода е следния:
$sezione="Contrabbasso";
$sotto_sezione="Val d'Aosta";
$sotto_sezione=eregi_replace("\\\'","&rsquo",$sotto_sezione);
$query="SELECT * FROM STRUMENTI WHERE SEZIONE containing '$sezione' and
SOTTO_SEZIONE containing '$sotto_sezione'";
$sth = ibase_query($dbh, $query) or die(ibase_errmsg());
$row = ibase_fetch_object ($sth);
Проблемът е че дори и да ми приеме query-то, разпознава апострофа като друг символ (друг вид апостроф) и не дава никакъв резултат от търсенето...
Опитах какво ли не, copy/paste на правилния апостроф, със и без slash отпред - последваха съобщения за грешки от незатворени кавички в InterBase.
Опитах се да променя и записа в базата данни, като замених апострофа с този отговарящ на &rsquo. В последния случай, query-то дава резултати, когато е подадено директно на базата данни, но не се изпълнява от php скрипта!!!
Сигурна съм че решението е елементарно, но с моя опит и знания по въпроса (не особено големи) не успявам да стигна до него, а няма как да избегна апострофите - текстовете в базата данни са на италиански и вътре бъка от тях.
Надявам се някой от вас да може да ми помогне
Благодаря предварително!
Имам проблеми с формулирането на query за InterBase, съдържащи текст с апостроф ( например "Val d'Aosta"). Ето го и query-to (примерно):
SELECT * FROM STRUMENTI WHERE SEZIONE containing "Contrabbasso" and
SOTTO_SEZIONE containing "Val d'Aosta"
php кода е следния:
$sezione="Contrabbasso";
$sotto_sezione="Val d'Aosta";
$sotto_sezione=eregi_replace("\\\'","&rsquo",$sotto_sezione);
$query="SELECT * FROM STRUMENTI WHERE SEZIONE containing '$sezione' and
SOTTO_SEZIONE containing '$sotto_sezione'";
$sth = ibase_query($dbh, $query) or die(ibase_errmsg());
$row = ibase_fetch_object ($sth);
Проблемът е че дори и да ми приеме query-то, разпознава апострофа като друг символ (друг вид апостроф) и не дава никакъв резултат от търсенето...
Опитах какво ли не, copy/paste на правилния апостроф, със и без slash отпред - последваха съобщения за грешки от незатворени кавички в InterBase.
Опитах се да променя и записа в базата данни, като замених апострофа с този отговарящ на &rsquo. В последния случай, query-то дава резултати, когато е подадено директно на базата данни, но не се изпълнява от php скрипта!!!
Сигурна съм че решението е елементарно, но с моя опит и знания по въпроса (не особено големи) не успявам да стигна до него, а няма как да избегна апострофите - текстовете в базата данни са на италиански и вътре бъка от тях.
Надявам се някой от вас да може да ми помогне
Благодаря предварително!
Re: Проблем с Interbase, php и апострофи
пробвай да заместип апострофа с два такива
апострофа се ползва служебно за начало и край на стринг
т.е "Val d''Aosta" <- това там са два апострофа, не кавички
апострофа се ползва служебно за начало и край на стринг
т.е "Val d''Aosta" <- това там са два апострофа, не кавички
Re: Проблем с Interbase, php и апострофи
Или вместо:
$query="SELECT * FROM STRUMENTI WHERE SEZIONE containing '$sezione' and SOTTO_SEZIONE containing '$sotto_sezione'"
пробвай с:
$query="SELECT * FROM STRUMENTI WHERE SEZIONE containing \"$sezione\" and SOTTO_SEZIONE containing \"$sotto_sezione\""
където \" е наклонена черта и кавички (не са 2 апострофа)
$query="SELECT * FROM STRUMENTI WHERE SEZIONE containing '$sezione' and SOTTO_SEZIONE containing '$sotto_sezione'"
пробвай с:
$query="SELECT * FROM STRUMENTI WHERE SEZIONE containing \"$sezione\" and SOTTO_SEZIONE containing \"$sotto_sezione\""
където \" е наклонена черта и кавички (не са 2 апострофа)