Sql Klassenreferenz

Aufstellung aller Elemente

Öffentliche Methoden

 Sql ($query= '', $dbid='')
 parseSourceQuery ($query)
 setQuery ($query= '')
 setParam ($name, $value, $dieIfUnknown=true)
 setVar ($name, $value)
 setInt ($name, $value)
 setIntList ($name, $values)
 setString ($name, $value)
 setStringList ($name, $values)
 setBoolean ($name, $value)
 setNull ($name)
query ()
getQuery ()

Öffentliche Attribute

 $src = ''
 $query = ''
 $data = Array()
 $param = array()
 $dbid = ''


Ausführliche Beschreibung

Definiert in Zeile 54 der Datei Sql.class.php.


Dokumentation der Elementfunktionen

& Sql::getQuery (  ) 

Ermittelt die fertige SQL-Anfrage.

Definiert in Zeile 361 der Datei Sql.class.php.

Benutzt query().

Wird benutzt von query().

00362      {
00363 // Abbruch, wenn es noch nicht gefüllte Parameter gibt.
00364 // Da diese Methode eh kaum verwendet wird, erstmal deaktiviert.
00365 //        if   ( count($this->param) > 0 )
00366 //             die('parameters not bound: '+implode(',',$this->param) );
00367                
00368           return $this->query;
00369      }

Sql::parseSourceQuery ( query  ) 

Die SQL-Anfrage wird auf Parameter untersucht.

Definiert in Zeile 116 der Datei Sql.class.php.

Benutzt $query, query(), setParam() und table_names().

Wird benutzt von setQuery() und Sql().

00117      {
00118           $this->src   = $query; // Wir merken uns die Ur-Abfrage, evtl. für Fehlermeldungen interessant.
00119           
00120           while( true )  // Schleife wird solange durchlaufen, solange Parameter gefunden werden.
00121           {
00122                $posKlLinks  = strpos($query,'{');
00123                $posKlRechts = strpos($query,'}');
00124                
00125                if   ( $posKlLinks === false )
00126                     break; // Schleife abbrechen, wenn kein Parameter mehr gefunden wird.
00127                     
00128                $nameParam = substr($query,$posKlLinks+1,$posKlRechts-$posKlLinks-1);  // Name Parameter
00129                
00130                if   ( !isset($this->param[$nameParam ]))
00131                     $this->param   [$nameParam ] = array();
00132                     
00133                $this->param[$nameParam ][] = $posKlLinks;
00134                
00135                $query = substr($query,0,$posKlLinks).substr($query,$posKlRechts+1);
00136           }
00137           
00138           $this->query = $query;
00139 
00140           // Tabellennamen in die Platzhalter setzen.
00141           // Dies ist noch OpenRat-spezifisch und sollte bei einer sauberen Abstraktion woanders gemacht werden. Aber wo?
00142           foreach( table_names($this->dbid) as $t=>$name )
00143           {
00144                $this->setParam($t,$name,false );
00145           }
00146           
00147 //        Html::debug($this->param);    
00148      }

& Sql::query (  ) 

Ermittelt die fertige SQL-Anfrage.
Alias zu getQuery()

Definiert in Zeile 351 der Datei Sql.class.php.

Benutzt getQuery().

Wird benutzt von getQuery(), parseSourceQuery() und setParam().

00352      {
00353           return $this->getQuery();
00354      }

Sql::setBoolean ( name,
value 
)

Setzt einen bool'schen Wert als Parameter.
Ist der Parameterwert wahr, dann wird eine 1 gesetzt. Sonst 0.

Parameter:
name Name des Parameters
value Inhalt

Definiert in Zeile 325 der Datei Sql.class.php.

Benutzt setInt().

00326      {
00327           if   ( $value )
00328                $this->setInt( $name,1 );
00329           else $this->setInt( $name,0 );
00330      }

Sql::setInt ( name,
value 
)

Setzt eine Ganzzahl als Parameter.

Parameter:
name Name des Parameters
value Inhalt

Definiert in Zeile 250 der Datei Sql.class.php.

Benutzt setParam().

Wird benutzt von setBoolean(), setQuery() und setVar().

00251      {
00252           $this->data[ $name ] = array( 'type'=>'int','value'=>$value );
00253           
00254           $this->setParam($name,intval($value));
00255 //        $this->query = str_replace( '{'.$name.'}',intval($value),$this->query );
00256      }

Sql::setIntList ( name,
values 
)

Setzt eine Ganzzahl-Liste als Parameter.

Parameter:
name Name des Parameters
values Inhalte

Definiert in Zeile 266 der Datei Sql.class.php.

Benutzt setParam().

Wird benutzt von setQuery().

00267      {
00268           $this->data[ $name ] = array( 'type'=>'intlist','value'=>$values );
00269           
00270           $values  = array_map('intval',$values);
00271           $this->setParam($name,implode(',',$values) );
00272 //        $this->query = str_replace( '{'.$name.'}',intval($value),$this->query );
00273      }

Sql::setNull ( name  ) 

Setzt einen Parameter auf den Wert null.

Parameter:
name Name des Parameters

Definiert in Zeile 339 der Datei Sql.class.php.

Benutzt setParam().

Wird benutzt von setQuery() und setVar().

00340      {
00341           $this->data[ $name ] = array( 'type'=>'null' );
00342           $this->setParam($name,'NULL');
00343      }

Sql::setParam ( name,
value,
dieIfUnknown = true 
)

Setzt einen Parameter.
Diese Methode sollte nur intern aufgerufen werden!

Parameter:
name Name des Parameters
value Inhalt
dieIfUnknown wenn true und Parameter unbekannt, dann Abbruch. private

Definiert in Zeile 182 der Datei Sql.class.php.

Benutzt query().

Wird benutzt von parseSourceQuery(), setInt(), setIntList(), setNull(), setString() und setStringList().

00183      {
00184 
00185           //   Nett gemeint, führt aber aktuell zu Fehlern, weil an vielen Stellen zu viele Parameter gefüllt werden.
00186           //   Daher erstmal deaktiviert.
00187           //        if   ( !isset($this->param[$name]) )
00188           //        {
00189           //             if   ( $dieIfUnknown )
00190           //                  die("parameter '$name' unknown. SQL=".$this->src);
00191           //             else
00192           //                  return;
00193           //        }
00194 
00195           if   ( !isset($this->param[$name]) )
00196                return; // Parameter nicht vorhanden.
00197 
00198           if   ( is_array($this->param[$name]) )
00199           {
00200                foreach( $this->param[$name] as $idx=>$xyz )
00201                {
00202                     $pos = $this->param[$name][$idx];
00203                     
00204                     $this->query = substr( $this->query,0,$pos ).$value.substr( $this->query,$pos );
00205                
00206                     foreach( $this->param as $pn=>$par)
00207                     {
00208                          foreach( $par as $i=>$p )
00209                          {
00210                               if   ( $p > $pos )
00211                                    $this->param[$pn][$i]=$p+strlen($value);
00212                          }
00213                     }
00214                     
00215                }
00216           }
00217           
00218           unset( $this->param[$name] );
00219      }

Sql::setQuery ( query = ''  ) 

Setzt eine neue SQL-Abfrage.
Bereits vorhandene Parameter werden automatisch wieder gesetzt.

Definiert in Zeile 156 der Datei Sql.class.php.

Benutzt $data, $query, parseSourceQuery(), setInt(), setIntList(), setNull(), setString() und setStringList().

00157      {
00158           $this->parseSourceQuery( $query );
00159 
00160           // Bereits vorhande Parameter setzen.        
00161           foreach( $this->data as $name=>$data )
00162           {
00163                if   ( $data['type']=='string'     ) $this->setString    ($name,$data['value'] );
00164                if   ( $data['type']=='stringlist' ) $this->setStringList($name,$data['value'] );
00165                if   ( $data['type']=='int'        ) $this->setInt       ($name,$data['value'] );
00166                if   ( $data['type']=='intlist'    ) $this->setIntList   ($name,$data['value'] );
00167                if   ( $data['type']=='null'       ) $this->setNull      ($name                );
00168           }
00169      }

Sql::setString ( name,
value 
)

Setzt eine Zeichenkette als Parameter.

Parameter:
name Name des Parameters
value Inhalt

Definiert in Zeile 283 der Datei Sql.class.php.

Benutzt setParam().

Wird benutzt von setQuery() und setVar().

00284      {
00285           $this->data[ $name ] = array( 'type'=>'string','value'=>$value );
00286 
00287           //if ( defined('CONF_ADDSLASHES') && CONF_ADDSLASHES )
00288           
00289           $value = addslashes( $value );
00290 
00291           $value = "'".$value."'";
00292 
00293           $this->setParam($name,$value);
00294 //        $this->query = str_replace( '{'.$name.'}',$value,$this->query );
00295      }

Sql::setStringList ( name,
values 
)

Setzt eine Zeichenketten-Liste als Parameter.

Parameter:
name Name des Parameters
values Inhalte

Definiert in Zeile 305 der Datei Sql.class.php.

Benutzt setParam().

Wird benutzt von setQuery().

00306      {
00307           $this->data[ $name ] = array( 'type'=>'stringlist','value'=>$values );
00308 
00309           $values  = array_map('addslashes',$values);
00310           
00311           $value = "'".implode("','",$values)."'";
00312 
00313           $this->setParam($name,$value);
00314      }

Sql::setVar ( name,
value 
)

Setzt einen Parameter.
Der Typ des Parameters wird automatisch ermittelt.

Parameter:
name Name des Parameters
value Inhalt

Definiert in Zeile 230 der Datei Sql.class.php.

Benutzt setInt(), setNull() und setString().

00231      {
00232           if   ( is_string($value) )
00233                $this->setString( $name,$value );
00234 
00235           if   ( is_null($value) )
00236                $this->setNull( $name );
00237           
00238           if   ( is_int($value) )
00239                $this->setInt( $name,$value );
00240      }

Sql::Sql ( query = '',
dbid = '' 
)

Erzeugt ein SQL-Objekt und analysiert die SQL-Anfrage.

Definiert in Zeile 103 der Datei Sql.class.php.

Benutzt $dbid, $query und parseSourceQuery().

00104      {
00105           $this->dbid  = $dbid;
00106           $this->parseSourceQuery( $query );
00107 
00108           $this->data  = array();
00109      }


Dokumentation der Datenelemente

Sql::$data = Array()

Zwischenspeicher für Parameterwerte.

Definiert in Zeile 70 der Datei Sql.class.php.

Wird benutzt von setQuery().

Sql::$dbid = ''

Definiert in Zeile 97 der Datei Sql.class.php.

Wird benutzt von Sql().

Sql::$param = array()

Ein 2-dimensionales Array mit den Positionen der Parameter.

Beispiel:

 Array
 (
    [lid] => Array
    (
       [0] => 65
       [1] => 81
    )
    [oid] => Array
    (
        [0] => 123
    )
 )
 
In der ersten Dimension sind die Parameter vorhanden, jeder Parameter hat eine Liste von Positionen, an denen er steht.
Ein Parameter kann nämlich mehrfach vorkommen!

Definiert in Zeile 94 der Datei Sql.class.php.

Sql::$query = ''

Auszuführende Abfrage.

Definiert in Zeile 64 der Datei Sql.class.php.

Wird benutzt von parseSourceQuery(), setQuery() und Sql().

Sql::$src = ''

Ursprüngliche SQL-Anweisung.

Definiert in Zeile 59 der Datei Sql.class.php.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:

Erzeugt am Thu May 14 00:55:50 2009 für OpenRat von  doxygen 1.5.8