Umstellung von mysql_query() auf $db->query()

Fragen und Infos zur Installation & Update von webEdition.
alaskana
webEdition Partner
webEdition Partner
Beiträge: 105
Registriert: Sa 5. Feb 2005, 08:09
Kontaktdaten:

Umstellung von mysql_query() auf $db->query()

Beitragvon alaskana » Do 29. Nov 2018, 19:13

Hallo zusammen,

irgendwie stehe ich anscheinend gerade etwas auf dem Schlauch. Im Zuge des Updates auf 8 würde ich gerne meinen PHP-Code etwas updatesicherer machen (v.a. auch im Hinblick auf PHP 7.x) und mysql_query() durch $db->query() ersetzen.

Hier ein Beispiel:

Code: Alles auswählen

$sql_query = "SELECT * from modTable";
$db_query = mysql_query($sql_query);
$counter = 0;
while($a_query = mysql_fetch_assoc($db_query)) {
	$counter++;
	foreach($a_query as $key => $value) {
		$a_results[$counter][$key] = $value;
	}
}
Wie könnte ich das für $db->query() umschreiben?

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: Umstellung von mysql_query() auf $db->query()

Beitragvon mokraemer » Do 29. Nov 2018, 23:34

Zum einen kannst du

Code: Alles auswählen

<we:listview type="sql" select=".." from=".." where=".." order="..">
<we:repeat>
<we:field name="xx"/>
<we:repeat>
</we:listview>
nutzen - WE macht an dieser Query NICHTS - d.h. du bist für die Query selbst zuständig. Er stellt dir aber die Daten in Altbekannter WE-Manier zur Verfügung. Dürfte die sicherste Variante sein. (ab WE 8.0.3)

WE stellt dir per se eine DB-Verbindung zur Verfügung, die du in
$GLOBALS['DB_WE']
findest. Sofern du eine Query absetzt und die Resultate verarbeitest, kannst du das direkt verwenden. Alternativ kannst du eine neue DB Verbdindung erstellen - WE macht das recht geschickt und holt nur eine neue wenn nötig:

Einzelnen Wert abfragen

Code: Alles auswählen

$data=f('SELECT xx FROM y WHERE ...');
Mehrere Werte

Code: Alles auswählen

$data=getHash('SELECT xx,yy,zz FROM y WHERE ...');
Variante 1:

Code: Alles auswählen

$db=new DB_WE();
$a_results=[];
$db->query('SELECT * FROM MYTable');
while($db->next_record()){
//nur einzelnes Feld
$a_result[]=$db->f('field');
}
Variante 2:

Code: Alles auswählen

$db=new DB_WE();
$a_results=[];
$db->query('SELECT * FROM MYTable');
while($db->next_record()){
//ganze Zeile
$a_result[]=$db->getRecord();
}
Variante 3:

Code: Alles auswählen

$db=new DB_WE();
$a_results=$db->getAllq('SELECT * FROM MYTable');
Variante 4:
(ID wird als Index im Resultat benutzt)

Code: Alles auswählen

$db=new DB_WE();
$a_results=$db->getAllFirstq('SELECT ID,m.* FROM MYTable m');
Am besten du schaust mal in die Klasse we_database_base, die Klasse ist recht stabil, was die API angeht - aber klar es kann auch hier mal kleinere Änderungen geben.
webEdition-Kern-Entwickler

alaskana
webEdition Partner
webEdition Partner
Beiträge: 105
Registriert: Sa 5. Feb 2005, 08:09
Kontaktdaten:

Re: Umstellung von mysql_query() auf $db->query()

Beitragvon alaskana » Mo 10. Dez 2018, 16:55

Sorry für die späte Antwort.

Vielen Dank für deine Tipps. Das hilft mir auf jeden Fall weiter.


Zurück zu „webEdition Installation & Update“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 Gäste