Ö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 = '' | |
Definiert in Zeile 54 der Datei Sql.class.php.
| & 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.
| 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.
| 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.
| 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.
| 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!
| 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.
| 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.
| 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.
| 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 }
| Sql::$data = Array() |
Zwischenspeicher für Parameterwerte.
Definiert in Zeile 70 der Datei Sql.class.php.
Wird benutzt von setQuery().
| Sql::$dbid = '' |
| 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.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.
1.5.8