Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Umieszczenie zmiennej ze stringiem pomiędzy apostrofami
AboutMe
post 15.06.2019, 20:02:14
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
viking
post 15.06.2019, 20:08:13
Post #2





Grupa: Zarejestrowani
Postów: 5 256
Pomógł: 885
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 15.06.2019, 20:08:30
Post #3





Grupa: Zarejestrowani
Postów: 7 798
Pomógł: 1373
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 15.06.2019, 21:28:58
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 16.06.2019, 08:54:31
Post #5





Grupa: Zarejestrowani
Postów: 1 420
Pomógł: 166
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 16.06.2019, 09:51:32
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 Wersja Lo-Fi Aktualny czas: 20.07.2019 - 21:29