Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: escape_string
Forum PHP.pl > Forum > Przedszkole
JohnySpot
Chciałbym rozszerzyć sobie mysqli o swoje własne query - takie, które wszystkie dane potraktuje mi przez escape_string i przez htmlspecialchars ENT_QUOTES. Ale nie mam zielonego pojęcia jak to wykonać.
hwao
Na szybko pisane:

  1. <?php
  2. /**
  3.  * Query
  4.  * 
  5.  * Pierwszy parametr to kod SQL, w ktorym kolejne znaki ? zostaja
  6.  * zastapione w kolejnosci podania parametrow. Dodatkowo parametry zastapiane pr
    zez ? sa potraktowane mysql_escape_string() i htmlspecialchars()
  7.  *
  8.  * @param string $sSql
  9.  * @return resource
  10.  */
  11. function query( $sSql ) {
  12. $aParams = func_get_args();
  13. $i=1;
  14.  
  15. $sSql = preg_replace( '@?@es', 'mysql_escape_string( htmlspecialchars( $aParams[$i++], ENT_QUOTES ) )', $sSql, count( $aParams ) );
  16.  
  17. return $sSql; //mysql_query( $sSql );
  18. }
  19.  
  20. echo query( 'Select * from ? where pole = ?', 'tabela', 1 );
  21. ?>
JohnySpot
Dzięki, ale nie o to mi chodziło. Mi chodziło o napisanie czegoś co dawałoby sobie radę z normalnym zapytanie smile.gif takim już gotowym. Bez odatkowej tablicy parametrów.
hwao
Potencjalnie jest to możliwe, ale praktycznie bardzo ciezko i sie nie oplaca. Skrypt musial by parsowac INTELIGENTNIE sql do drzewka, nastepnie odpowiednie czesci prze filtrowac i na koncu zlozyc SQL. Samo napisanie kodu odpowiedzialnego za zamiene sql na drzewko to juz spore wyzwanie a co dopiero "system domyslania sie co jest co".

Te rozwiazanie co podałem jest najlepsze
JohnySpot
a czy gdybym całe $query włażył w $query = mysql_escape_string($query); questionmark.gif
nospor
No to by bylo niepowazne winksmiley.jpg

  1. SELECT * FROM tabela WHERE pole='ala'

A po Twojej operacji by to wygladalo tak:
  1. SELECT * FROM tabela WHERE pole=\'ala'

Bład skladni sql. Filtruje i zamienia sie pola, a nie cale zapytanie
hwao
mysql_escape_string" title="Zobacz w manualu php" target="_manual() jest po to zeby zamienic wszyskie znaki wystepujace w skladni SQL na "bezpieczne odpowiedniki" ktore nie sa interpretowane przez paser kodu SQL. Także jak dasz cały string, to zostanie on zamieniony na forme kompletnie "ingorowana"
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.