Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: SELECT z apostrofem
Forum PHP.pl > Forum > Bazy danych
krzysiekX
Witam
Mam jakieś dane, które zawierają apostrof np:
$dane = "xxx'xxxxxx"
po insercie z mysql_escape_string w bazie wyglądają one tak: xxx\'xxxxxx
czyli wszystko gra.
Ale gdy robie selecta z mysql_escape_string, nie znajduje ich

SELECT * FROM `categories` WHERE cat_name = ".mysql_escape_string(xxx'xxxxxx)."

Co robię źle?
Proszę o pomoc
Pozdrawiam
nospor
w bazie to on raczej powinien wygladac task: xxx'xxxxxx, bez \

co do zapytania to chyba ociapkach zapomniales:
  1. <?php
  2.  
  3. $zap=&#092;"SELECT * FROM `categories` WHERE cat_name = '\".mysql_escape_string(\"xxx'xxxxxx\").\"'\";
  4.  
  5. ?>
krzysiekX
No nie raczej w bazie powinien wyglądać : xxx\'xxxxxx, z \
nobo jak przed wrzuceniem do bazy jest : xxx'xxxxxx, a wrzucając robie wcześniej : mysql_escape_string.
Z ciapami też nie działa
  1. <?php
  2.  
  3. $zap=&#092;"SELECT * FROM `categories` WHERE cat_name = '\".mysql_escape_string(\"xxx'xxxxxx\").\"'\";
  4.  
  5. ?>
nospor
Uwierz mi, w bazie powinno być bez \. mysql_escape_string robisz po to, aby nie przerwać textu.
Tak jak u ciebie . masz xxxxx'xx. Jesli wlozysz to do zapytania:
$zap='....set cos=\'xxxxx'xx\'' i masz przerwanie textu po pierwszych x. Dodajać \przed apostrfem, okreslasz, ze to jest apostrof w tekscie a nie zakonczenie stringa czyli masz:$zap='....set cos=\'xxxxx\'xx\'' i jest ok a do bazy wrzuci ci bez \. Jesli nie zalapales jeszcze o co chodzi to se gdzies poczytaj lub zapytaj kogos kto lepiej tlumaczy ode mnie.
Zobacz w bazie co masz. Jak z \ to cos gdzies za duzo robiles. POkaz wtedy caly kod wlacznie z insertem
krzysiekX
Ok, to powiedz mi, jeżeli zrobie
$dane = "xxx'xxxx";
$db->Execute("Insert into tabela values ('".mysql_escape_string($dane)."')");

To w bazie co będzie questionmark.gif
Bo ja mam xxx\'xxx, a potem musze w php dać stripslashes aby pozbyć się \
Pozdrawiam
nospor
a ja dalem cos takiego:
  1. <?php
  2. $dane = &#092;"xxx'xxxx\";
  3. $sql=&#092;"Insert into TEST2 values ('\".mysql_escape_string($dane).\"')\";
  4. $result=mysql_query($sql) or die (mysql_error());
  5.  
  6. ?>

i mi do bazy zapisal: xxx'xxxx

może ty masz w php.ini ustawione magic_quotes coś tam. Jeżeli tak to nie musisz już wywolywać funkcji mysql_escape_string (chyba). Spróbuj nie wywolać i pogadamy
Ja mam powylaczane:
Cytat
; Magic quotes for incoming GET/POST/Cookie data.
magic_quotes_gpc = Off

; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
magic_quotes_runtime = Off   

; Use Sybase-style magic quotes (escape ' with '' instead of \').
magic_quotes_sybase = Off
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.