Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Krótka funkcja ułatwiająca korzystanie z zapytań do bazy danych
Kildyt
post
Post #1





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Witajcie!

Piszę aktualnie nową wersję redbooka i pomyślałem, że niektórym powinna ułatwić życie krótka funkcja, która generuje ciąg do zapytań do bazy danych.
Przy okazji proszę o ocenę.

Oto kod:
  1. <?php
  2. function pull($item, $method = NULL) { // Generowanie ciągu do zapytania mysql
  3.    $return = NULL;
  4.    
  5.    /*
  6.     OJAŚNIENIE SYTUACJI
  7.     1 - Została podana jedynie nazwa elementu
  8.         Przykład: array('imie', 'nazwisko')
  9.     2 - Została podana tablica zawierająca nazwę elementu i jej wartość, która nie jest obiektem
  10.         Przykład: array(
  11.                                         array('imie', 'Jan'),
  12.                                         array('imie', $autor),
  13.                                         array('imie', $_POST['autor'])
  14.                                     )
  15.     3 - Została podana tablica zawierająca nazwę elementu i jej wartość, która jest tablicą i przyjmuje wartość nazwy elementu
  16.         Przykład: array(
  17.                                         array('imie', $_POST),
  18.                                         array('imie', $_GET)
  19.                                     )
  20.     */
  21.    
  22.    if (empty($method)) {
  23.        $method = $_POST;
  24.    }
  25.    
  26.    for ($i = 0, $to = count($item)-1; $i <= $to; $i++) {
  27.        if (is_array($item[$i])) {
  28.            if (is_array($item[$i][1])) {
  29.                // Sytuacja 3
  30.                $return .= '`'.$item[$i].'` = ''.$item[$i][1][$item[$i][0]].'', ';
  31.            } else {
  32.                // Sytuacja 2
  33.                $return .= '`'.$item[$i][0].'` = ''.$item[$i][1].'', ';
  34.            }
  35.        } else {
  36.            // Sytuacja 1
  37.            $return .= '`'.$item[$i].'` = ''.$method[$item[$i]].'', ';
  38.        }
  39.    }
  40.    
  41.    return substr($return, 0, -2);
  42. }
  43. ?>


I stąd zamiast:
  1. <?php
  2. mysql_query("INSERT INTO `name` SET `imie`='$_POST[imie]', `nazwisko`='$_POST[nazwisko]', `gg`='$_POST[gg]', `jabber`='$_POST[jabber]', `email`='$_POST[email]'");
  3. ?>
Mamy:
  1. <?php
  2. mysql_query("INSERT INTO `name` SET ".pull(array('imie', 'nazwisko', 'gg', 'jabber', 'email')));
  3. ?>


Funkcja napisana w kilkanaście minut. Licencja GPL v3.
Może się to wielu wydawać dziwne, że tak prosty kod daję do oceny i publikuję na GPL-u, ale chciałbym dać chociaż mały znak, że wspieram open source! (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Kildyt 2.03.2009, 18:08:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
to się odfiltruje

To przepuszczaj tez od razu wszystko przez htmlspecialchars(). Jak ci nie bedzie potrzebne to sobie zamienisz spowrotem.
PRzepuszczaj jeszcze przez base64. Jak znowu nei bedzie potrzebne to tez odkodujesz.

(IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Cytat
W starej wersji redbook'a filtrowałem za każdym razem zmienne i źle na tym wyszedłem
Jak sie nie uzywa sprawdzonych narzedzi ala PDO.... (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Cytat
ja tu widzę (w mojej sytuacji)
No i ok. Dla Ciebie moze to i git, ale nie wymuszaj tego na innych. Dales skrypt, by zaistniec w sieci, to przyjmij do wiadomosci ze nie kazdy robi tak jak ty i nie kazdy leci po globalnym filtrowaniu
Go to the top of the page
+Quote Post

Posty w temacie
- Kildyt   [php] Krótka funkcja ułatwiająca korzystanie z zapytań do bazy danych   2.03.2009, 14:38:03
- - .radex   [PHP] pobierz, plaintext <?phpfor ($i = 0, ...   2.03.2009, 15:21:07
|- - Kildyt   Cytat(.radex @ 2.03.2009, 17:21:07 ) ...   2.03.2009, 18:07:53
|- - .radex   Cytat(Kildyt @ 2.03.2009, 18:07:53 ) ...   2.03.2009, 18:55:06
- - Kildyt   Używam w nowym CMS-ie: error_reporting(E_ALL), wię...   2.03.2009, 15:29:50
|- - mike   Cytat(Kildyt @ 2.03.2009, 15:29:50 ) ...   2.03.2009, 15:37:38
- - bim2   count() wydziel do zmiennej i na niej iteruj... P...   2.03.2009, 16:35:53
|- - mike   Cytat(bim2 @ 2.03.2009, 16:35:53 ) co...   2.03.2009, 16:37:09
- - bim2   @mike Tak jest jak patrzy się na for( i count() ;d...   2.03.2009, 19:28:33
- - erix   A czemu nie zrobisz funkcji w stylu: [PHP] pobierz...   2.03.2009, 20:54:25
- - Crozin   Jak będę miał jakąś wartość numeryczną to efektem ...   3.03.2009, 23:42:12
- - Kildyt   Wartość zawsze będzie w apostrofach. Zastosowanie ...   4.03.2009, 11:38:51
- - nospor   CytatWartość zawsze będzie w apostrofach.ale zdaje...   4.03.2009, 11:50:02
- - phpion   Cytat(Kildyt @ 2.03.2009, 16:38:03 ) ...   4.03.2009, 12:09:12
- - Kildyt   Trochę poprawiłem. Apostrofy nie s...   4.03.2009, 13:18:23
- - Crozin   A co jak będę chciał np. zrobić UPDATEa:[SQL] pobi...   4.03.2009, 14:36:57
|- - Kildyt   Cytat(Crozin @ 4.03.2009, 16:36:57 ) ...   4.03.2009, 15:00:00
- - sowiq   Cytatarray('sthCount', '`sthCount ...   4.03.2009, 15:03:19
|- - Kildyt   Cytat(sowiq @ 4.03.2009, 17:03:19 ) T...   4.03.2009, 15:17:06
- - Crozin   Z góry zaśmiecasz wszystkie zmienne z $_POST,...   4.03.2009, 16:03:49
|- - Kildyt   Cytat(Crozin @ 4.03.2009, 18:03:49 ) ...   4.03.2009, 18:12:54
- - erix   CytatCo jest złego w hurtowym przefiltrowaniu zmie...   4.03.2009, 20:27:34
|- - .radex   Cytat(erix @ 4.03.2009, 20:27:34 ) An...   4.03.2009, 21:55:07
- - nospor   Cytatto się odfiltruje To przepuszczaj tez od...   4.03.2009, 22:18:32
- - Crozin   Poprzednicy już ładnie skrytykowali za m...   6.03.2009, 19:45:13
- - rzymek01   nie dałeś nawiasu w linii 6,7 i 11   6.03.2009, 20:01:11


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

 



RSS Aktualny czas: 16.10.2025 - 20:45