HX3 Foren  

  HX3 Foren > Konstruktiv > Software- und Webentwicklung

Software- und Webentwicklung Planung, Programmierung und Administration
UML, JavaScript/DOM, ASP, JSP, PHP, Apache, MySQL, Python, Perl (...)

Antwort
 
Themen-Optionen Ansicht
Alt 21.11.2004, 15:21   #1 (permalink)
50 Beiträge
 
Registriert seit: 20.11.2004
Beiträge: 59
Standard [Tutorial] SQL Syntax ganz einfach

Die SQL Syntax sollte ja eigentlich für die meisten Datenbanken gelten. Leider ist sie für einen PHP Schreiber etwas ungewohnt und je nach dem, was man für eine DB benutzt sehr komplex geworden. Eine kleine Vereinfachung kann ich hier anbieten. Sie beschreibt einen einfachen Weg, umfangreiche INSERT und UPDATE Befehle festzulegen, ohne sich näher mit der SQL Syntax rumärgern zu müssen. Die Funktionen sind schon auf meinem Mist gewachsen, aber auf die Idee hat mich ein Programmierkollege gebracht.

Zunächst müsst Ihr Eure Datenbankklasse erweitern (ich geh mal davon aus, Ihr habt sowas):

PHP-Code:
    /**
     * Returns a query in sql syntax
     * @input: string $type the type of the query
     * @input: string $table the table name
     * @input: array $sqlarray the array with all the values
     * @input: string $where the where syntax of the query
     * @return: string $query the complete sql query
     */
    
function make_sql($type$table$sqlarray$where='')
    {
        if (
$type == 'INSERT' || $type == 'REPLACE')
        {
            
$keys    array_keys($sqlarray);
            
$values    array_values($sqlarray);

            
$keys    implode(', '$keys);
            
$values    implode('\', \''$values);

            
$query  $type.' INTO '.$table.' ('.$keys.') VALUES (\''.$values.'\')';
        }
        elseif (
$type == 'UPDATE')
        {
            
$updates = array();

            while (list(
$keys$values) = @each($sqlarray))
            {
                
$updates[] = $keys.'=\''.$values.'\'';
            }
            
$updates = @implode(', '$updates);

            if(
$where == '')
                
$where '1';

            
$query  $type.' '.$table.' SET '.$updates.' WHERE '.$where
        }
        else
            
$this->error('Wrong sql type: '.$type);

        return 
$query;
    } 
Sobald der Code drin ist, könnt Ihr ganz einfach Eure INSERT/REPLACE oder UPDATE Abfragen erstellen:

INSERT:
PHP-Code:
        $sqlarray = array(
                    
'id'        => '',
                    
'name'        => $GLOBALS['data']['form']['name'],
                    
'firstname'    => $GLOBALS['data']['form']['firstname'],
                    
'street'    => $GLOBALS['data']['form']['street'],
                    
'zip'        => $GLOBALS['data']['form']['zip'],
                    
'city'        => $GLOBALS['data']['form']['city'],
                    
'phone1'    => $GLOBALS['data']['form']['phone1'],
                    
'phone2'    => $GLOBALS['data']['form']['phone2'],
                    
'mobile'    => $GLOBALS['data']['form']['mobile'],
                    
'fax'        => $GLOBALS['data']['form']['fax'],
                    
'email'        => $GLOBALS['data']['form']['email'],
                    
'created'    => $gettime['sqldatetime']
                );

        
/* Set up the insert query */
        
$GLOBALS['temp']['sql'] = $GLOBALS['class']['db']->make_sql('INSERT'$GLOBALS['class']['db']->prefix.'user'$sqlarray); 
UPDATE:
PHP-Code:
            $sqlarray = array(
                        
'name'        => $GLOBALS['data']['form']['name'],
                        
'firstname'    => $GLOBALS['data']['form']['firstname'],
                        
'street'    => $GLOBALS['data']['form']['street'],
                        
'zip'        => $GLOBALS['data']['form']['zip'],
                        
'city'        => $GLOBALS['data']['form']['city'],
                        
'phone1'    => $GLOBALS['data']['form']['phone1'],
                        
'phone2'    => $GLOBALS['data']['form']['phone2'],
                        
'mobile'    => $GLOBALS['data']['form']['mobile'],
                        
'fax'        => $GLOBALS['data']['form']['fax'],
                        
'email'        => $GLOBALS['data']['form']['email'],
                    );
    
            
/* Set up the insert query */
            
$GLOBALS['temp']['sql'] = $GLOBALS['class']['db']->make_sql('UPDATE'$GLOBALS['class']['db']->prefix.'user'$sqlarray'id='.$GLOBALS['data']['form']['id']); 
Zurück gegeben wird jeweils die korrekte Syntax für das INSERT bzw. UPDATE und für einen PHP Programmierer ist es wahrscheinlicher übersichtlicher die Werte in ein array zu packen. Lasst Euch die $GLOBALS nicht verwirren. Ich schreib das halt immer so.

Viel Spass beim testen.
Dr. Doom ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116