dani
Goto Top

SQL - Optimieren

Hallo miteinander,

ich bin grad dabei auf einer Homepage den Quellcode zu optimieren. Jetzt bin ich des öftern über folgende Zeilen gestolpert:


$sql="SELECT * FROM `hp_archiv_bilder` WHERE id='".$_GET['id']."';";  
$result=mysql_query($sql);
$row=mysql_fetch_object($result);

$sql="UPDATE `hp_archiv_bilder` SET hits='".($row->hits+1)."' WHERE id='".$_GET['id']."';";  
mysql_query($sql);

Ist es machbar aus 2 SQL - Statments eines wird?! Um beide Statments zusehen, alles im Kasten makieren!!!!


Gruß
Dani

Content-ID: 37407

Url: https://administrator.de/forum/sql-optimieren-37407.html

Ausgedruckt am: 01.04.2025 um 22:04 Uhr

Boy1980HH
Boy1980HH 06.08.2006 um 15:32:08 Uhr
Goto Top
Also die beiden von dir geposteten SQL's lassen sich nicht zu 1 SQL optimieren. Der eine ist ein SELECT, der andere ein Update und beide relasisieren bekanntlich ganz ganz unterschiedliche Aufgaben....

Anders würde/ könnte es ausschauen, wenn es sich um 2 gleiche SQL Statements (also 2 SELECTS z.B.) handelt....

MFG, Maik
filippg
filippg 06.08.2006 um 16:34:32 Uhr
Goto Top
Hallo,

so ganz kann ich mich Maik nicht anschliessen.
Unter MS SQL würde ich da schnelle eine Stored Procedure für machen, die die beiden einzelabfragen enthält, und müsste dann halt nur einmal per PHP eine Anfrage an die DB stellen (und hätte dabei die Sicherheit, das Update nicht zu vergessen). In sofern bräuchte ich natürlich noch zwei SQL-Statements, aber nur einen Verbindungsaufbau zur DB.
Was da unter MySQL geht weiss ich nicht. Probier mal
$sql="UPDATE `hp_archiv_bilder` SET hits= hits+1 WHERE id='".$_GET['id']."'; SELECT * FROM `hp_archiv_bilder` WHERE id='".$_GET['id']."'"; (also zwei Statements in eine Anfrage, evlt. funktioniert das; so funktioniert auch SQL-Injection)

Filipp
Biber
Biber 06.08.2006 um 19:35:30 Uhr
Goto Top
Moin Dani,

das SELECT-Statement vor dem UPDATE hat keinerlei sittlichen Nährwert.
Und der anschließende SELECT auf den gerade aktualisierten Satz macht nur Sinn, wenn Du irgendwas (in der Praxis: den aktualisierten Satz anzeigen) machen willst.

Das notwendige Statement reduziert sich, wie bereits von filippg geschrieben, auf
$sql="UPDATE `hp_archiv_bilder` SET hits= hits+1 WHERE id='".$_GET['id']."';  

Gruß
Biber
Dani
Dani 06.08.2006 um 23:05:33 Uhr
Goto Top
Guten Abend,
wunderbar! Genau das habe ich gesucht! Jetzt hab ich auch 5 Zeilen => 2 gemacht. Danke an euch 3! Schönen Abend noch.....


Gruß
Dani