Also nur um es noch einmal zu unterstreichen: Das Problem ist doch offensichtlich und es ist keine weitere Analyse notwendig. Es muss nur einfach einmal vernünftiger Code geschrieben werden.
Daher noch einmal: In Java werden PreparedStatements verwendet. Der Link, den ich gebracht habe, erläutert dies auch. Das Beispiel auf der Seite ist z.B.:
[CODE=java] public void updateCoffeeSales(HashMap<String, Integer> salesForWeek) throws SQLException {
String updateString =
"update COFFEES set SALES = ? where COF_NAME = ?";
String updateStatement =
"update COFFEES set TOTAL = TOTAL + ? where COF_NAME = ?";
try (PreparedStatement updateSales = con.prepareStatement(updateString);
PreparedStatement updateTotal = con.prepareStatement(updateStatement))
{
con.setAutoCommit(false);
for (Map.Entry<String, Integer> e : salesForWeek.entrySet()) {
updateSales.setInt(1, e.getValue().intValue());
updateSales.setString(2, e.getKey());
updateSales.executeUpdate();
updateTotal.setInt(1, e.getValue().intValue());
updateTotal.setString(2, e.getKey());
updateTotal.executeUpdate();
con.commit();
}
} catch (SQLException e) {
JDBCTutorialUtilities.printSQLException(e);
if (con != null) {
try {
System.err.print("Transaction is being rolled back");
con.rollback();
} catch (SQLException excep) {
JDBCTutorialUtilities.printSQLException(excep);
}
}
}
}[/CODE]
Und das der SQL Befehl
[ICODE]DELETE FROM `Products` WHERE `id`= id[/ICODE]
alles löscht, ist doch klar:
Alle Zeilen, bei denen die id gleich der id ist, werden gelöscht.
Aber das War ja auch nie die Aussage. Die Beschreibung zeigt es deutlich und [USER=61189]@LimDul[/USER] hat es auch noch einmal gesagt:
Er wird mit Platzhaltern gearbeitet!
Also dann etwas wie
[ICODE]DELETE FROM `Products` WHERE `id`= ?[/ICODE]
Und dann muss das als PreparedStatement angelegt werden und der Parameter muss gesetzt werden (Sowas wie statement.setInt(1, getId());
Und um es noch einmal ganz deutlich zu sagen: Es werden keine SQL befehle zusammen gestückelt. Der TE schreibt laut Titel einen Webservice!
Und auch in PHP muss man keine SQL Befehle zusammen stückeln. Auch da gibt es PreparedStatements: https://www.w3schools.com/php/php_mysql_prepared_statements.asp
Und nur um es noch einmal einzuordnen: Das ist grob fahrlässiges Verhalten! Diese SQL Injection Attacken will man nicht! Daher: [USER=51169]@Henri[/USER] und [USER=65838]@Joreyk[/USER]: Lest euch den Inhalt der Links durch. Versucht es zu verstehen. Das ist nichts, das unwichtig oder nice to have wäre.