Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ MySQL _ Umieszczenie zmiennej ze stringiem pomiędzy apostrofami

Napisany przez: AboutMe 15.06.2019, 20:02:14

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?

Napisany przez: viking 15.06.2019, 20:08:13

Poczytaj o bindowaniu parametrów.

Napisany przez: Pyton_000 15.06.2019, 20:08:30

prawie Ci wyszło smile.gif

Kod
"'{$string)'"

Napisany przez: AboutMe 15.06.2019, 21:28:58

No niestety

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

sprawdzę te bindowanie


Napisany przez: Tomplus 16.06.2019, 08:54:31


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();

Napisany przez: AboutMe 16.06.2019, 09:51:32

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)