Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Umieszczenie zmiennej ze stringiem pomiędzy apostrofami
AboutMe
post
Post #1





Grupa: Zarejestrowani
Postów: 261
Pomógł: 0
Dołączył: 24.02.2008

Ostrzeżenie: (0%)
-----


Dzień dobry!

W zapytaniu select potrzebuję sprawdzić czy dany rekord jest odpowiedniego typu przez sprawdzenie ciągiem znaków:

  1. terms = 'string'


gdy powyższy kod przekształcę na coś takiego

  1. terms = '" . $string . "';


to zapytanie przestaje działać a var_dumb zwraca pusty obiekt.

Poniższy kod też nie zadziała przez apostrofy:

  1. terms = '{$string}'


Jak takie coś rozwiązaćquestionmark.gif?

Ten post edytował AboutMe 15.06.2019, 20:07:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Poczytaj o bindowaniu parametrów.


--------------------
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


prawie Ci wyszło smile.gif

Kod
"'{$string)'"
Go to the top of the page
+Quote Post
AboutMe
post
Post #4





Grupa: Zarejestrowani
Postów: 261
Pomógł: 0
Dołączył: 24.02.2008

Ostrzeżenie: (0%)
-----


No niestety
  1. "'{$string)'"
zwraca błąd
Parse error: syntax error, unexpected ''{$string}''

sprawdzę te bindowanie

Go to the top of the page
+Quote Post
Tomplus
post
Post #5





Grupa: Zarejestrowani
Postów: 1 879
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----



zmienne dodane w {} na 100% działają, musisz coś psuć z apostrofami.

nie będzie działać jeżeli zrobisz:

  1. $sql = 'SELECT * FROM table WHERE name = "'{$Config->getUsername()}'";';


ale będzie działać tak:


  1. $sql = 'SELECT * FROM table WHERE name = '."'{$username}'".';';
  2. //albo
  3. $sql = "SELECT * FROM table WHERE name = '{$username}';"
  4. //albo
  5. $sql = "SELECT * FROM table WHERE name = '{$Config->getUsername()}';";


Możliwości jest więcej, chociaż najlepiej bindować zapytania SQL czy stworzyć zapytanie typu, które jest bezpieczne

  1. $sth = $dbh->prepare('SELECT * FROM table WHERE name = ?;');
  2. $sth->bindParam(1, $username);
  3. $sth->execute();
Go to the top of the page
+Quote Post
AboutMe
post
Post #6





Grupa: Zarejestrowani
Postów: 261
Pomógł: 0
Dołączył: 24.02.2008

Ostrzeżenie: (0%)
-----


Okazało się że to była literówka w wartości zmiennej, myślnik zamiast podkreślnika sciana.gif Dzięki za fatygę smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 21:38