Poniższy kod wyświetla z bazy dowolne zapytanie SQL (o nieznanej liczbie kolumn po SELECT) bez chronionych parametrów (?) w bibliotece MySQLi.
Zapytanie – zamiast przypisać do zmiennej – można wczytać np. z bazy danych, albo z klawiatury w innej części programu.
fragment zeszyt.php:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <?php include "polacz.php"; //tu laczymy sie z baza - biblioteka MySQLi $zapytanie="SELECT imie, nazwisko FROM klient;"; //dowolne zapytanie SELECT z bazy, z dowolna liczba parametrow po przecinkach $pozycja=strpos($zapytanie, "FROM"); if ($pozycja!=0) { $parametry= substr($zapytanie, 7, $pozycja-8); //parametry wyciete do slowa FROM, zapytanie musi zaczynać się od SELECT bez spacji $tpar=explode(",",$parametry); //rozbijamy na pojedyncze parametry $ilosc=count($tpar); // obliczenie ilosci parametrow SELECT if ($sql=$baza->prepare($zapytanie)) { $sql->execute(); $php_polecenie="\$sql->bind_result("; //ukladamy polecenie PHP w stringu for ($i=0; $i<$ilosc; $i++) $php_polecenie .= "\$zmienna[$i]".($i<$ilosc-1 ? ", " : ");"); //do kazdej kolumny wynikowej SELECT dodajemy jedna zmienna z tablicy eval($php_polecenie); //wykonanie polecenia PHP ze stringu echo "<table border="1">\n<tr>"; for ($i=0; $i<$ilosc; $i++) echo "<th>".$tpar[$i]."</th>"; echo "</tr>\n"; while ($sql->fetch()) { echo "<tr>"; for ($i=0; $i<$ilosc; $i++) echo "<td>".$zmienna[$i]."</td>"; //jedna linijka w z wyswietlonej tablicy echo "</tr>\n"; } echo "</table>"; } $sql->close(); } $baza->close(); ?> |