SQL MAX() - Fehler?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
WHERE (SELECT MAX(id) FROM excel)

ist wohl nicht ganz das, was du meinst. Das sollte wohl eher so heißen:

WHERE id = (SELECT MAX(id) FROM excel)
crRaphi 
Fragesteller
 27.11.2022, 12:29

Danke für deine Hilfe funktioniert.

Wenn ich jedoch eine zweite Abfrage anhänge:

//NOTE variablen
$bildname = $_FILES["DateiHochladen"]["name"];
$alttext = $_POST['imgalttext'];
$fach = $_GET['t'];
$titel = $_POST['titel'];
$video = $_POST['video'];
$veroeffentlichen = $_POST['veroefffentlichen'];

//NOTE sende SQL / Update SQL
$senden = "UPDATE '$fach' set naechste = :titel, veroeffentlichen = :datum  WHERE id = (SELECT max(id)   FROM '$fach'); INSERT INTO '$fach' (titel, img, alttext, video, vorherige) VALUES (:titel, :img, :alttext,:video, (SELECT titel FROM '$fach' WHERE id = (SELECT max(id) FROM '$fach')))";

//NOTE senden an die DB
$lekerstellen = $verbindung->prepare($senden);
$lekerstellen->bindparam(':titel', $titel);
$lekerstellen->bindparam(':img', $bildname);
$lekerstellen->bindparam(':alttext', $alttext);
$lekerstellen->bindparam(':video', $video);
$lekerstellen->bindparam(':datum', $veroeffentlichen);
$lekerstellen->execute();

Dann kommt immer eine Fehler:

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 25 column index out of range in C:\Users\rapha\OneDrive\Desktop\dwl - route\php\lekerstellen.php:34 Stack trace: #0 C:\Users\rapha\OneDrive\Desktop\dwl - route\php\lekerstellen.php(34): PDOStatement->execute() #1 {main} thrown in C:\Users\***\OneDrive\Desktop\***\php\lekerstellen.php on line 35

Ich nutze eine SQLite DB.

Ich hoffe Du kannst mir helfen.

Danke im voraus!

0
ultrarunner  27.11.2022, 22:10
@crRaphi

Du musst jede Abfrage einzeln senden. Mehrere Abfragen in einem einzigen SQL-String sind hier nicht zulässig.

0
crRaphi 
Fragesteller
 27.11.2022, 22:13
@ultrarunner

Also brauche ich alles unter dem senden an die db zweimal?

Oder kann ich das noch anderes machen?

0

Ist das so zu Speichern nicht unsinnig? Der vorherige Datensatz hat immer id-1 dann kannst du auch sparen das zu speichern.