SQL - Optimieren
Hallo miteinander,
ich bin grad dabei auf einer Homepage den Quellcode zu optimieren. Jetzt bin ich des öftern über folgende Zeilen gestolpert:
Ist es machbar aus 2 SQL - Statments eines wird?! Um beide Statments zusehen, alles im Kasten makieren!!!!
Gruß
Dani
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 37407
Url: https://administrator.de/forum/sql-optimieren-37407.html
Ausgedruckt am: 01.04.2025 um 22:04 Uhr
4 Kommentare
Neuester Kommentar
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
Anders würde/ könnte es ausschauen, wenn es sich um 2 gleiche SQL Statements (also 2 SELECTS z.B.) handelt....
MFG, Maik
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
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
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
Gruß
Biber
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