Frage von MinecrafterPG, 40

Warum funktioniert das folgende PHP Script nicht so?

Hi Leute,

ich bin nun fast fertig mit meiner selbstgeschriebenden Website-Bewertung. Doch nun, kurz bevor ich fertig bin, gibt er mir beim in die Datenbank schreiben einen Error

Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in /write.php on line 33

Hier der Code:

<?php
$aussehen = $_GET['a'];
$uebersicht = $_GET['u'];
$inhalte = $_GET['i'];
$latitude   = $_GET['lat'];
$longitude = $_GET['long'];

$nachname = $_POST[nachname]; 
$vorname = $_POST[vorname];
$mail = $_POST[mail];
$ip = $_SERVER[REMOTE_ADDR];
$fullhost = gethostbyaddr($ip);
$host = preg_replace("/^[^.]+./", "*.", $fullhost);
$useragent = $_SERVER['HTTP_USER_AGENT'];

$pdo = new PDO('mysql:host=localhost;dbname=***', ***', '***');
 
$sql = "INSERT INTO IP SET ip = :ip, vorname = :vorname, nachname = :nachname, mail= :mail, host = :host, fullhost = :fullhost, latitude = :latitude, longitude = :longitude, useragent = :useragent, aussehen = :aussehen, uebersicht = :uebersicht, inhalte = :inhalte";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':ip', $ip);
$stmt->bindvalue(':vorname', $vorname);
$stmt->bindvalue(':nachname', $nachname);
$stmt->bindvalue(':mail', $mail);
$stmt->bindvalue(':host', $host);
$stmt->bindvalue(':fullhost', $fullhost);
$stmt->bindvalue(':latitude', $latitude);
$stmt->bindvalue(':longitude', $longitude);
$stmt->bindvalue(':useragent', $useragent);
$stmt->bindvalue(':aussehen', $aussehen);
$stmt->bindvalue(':uebersicht', $uebersicht);
$stmt->bindvalue(':ihnalte', $ihnalte);

$stmt->execute();
?>

In der Request stehen auch einige Sachen (aussehen, uebersicht, inhalte, standort).

Wo ist der Fehler?

Antwort
von Suboptimierer, 28
ihnalte

Fällt dir etwas auf?

Die Art einer INSERT-Definition ist mir neu. Früher hat man immer so INSERTs definiert:

insert into Tabelle (spalte1, spalte2,...) values (wert1, wert2,...)
Kommentar von FloPinguin ,

Das Insert müsste schon stimmen

Kommentar von MinecrafterPG ,

Die hat auch früher immer funktioniert

Kommentar von Suboptimierer ,

Negativ.

Früher wurden INSERTs nicht mit SET definiert, sondern immer mit VALUES.

https://en.wikipedia.org/wiki/Insert_(SQL)

Antwort
von PeterKremsner, 26

Tippfehler in der letzten Zeile deiner $stmt Zuweisungen.

inhalte und nicht ihnhalte

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten