Frage von MinecrafterPG, 70

Wie kann ich die folgenden PHP Zeilen zusammenfassen?

Hi Leute, ich habe eine Frage, wie kann ich folgende PHP Befehle zusammenfassen:

$statement = $pdo->prepare("INSERT INTO IP (IP) VALUES (?)");
$statement->execute(array($ip));   

$statement = $pdo->prepare("INSERT INTO IP (nachname) VALUES (?)");
$statement->execute(array($nachname));

Wenn ich diese Zeilen ausführe, werden in meiner MYSQL Datenbank logischerweise zwei Einträge erstellt. Kann ich die beiden Variablen ($ip und $nachname) auch in einen Eintrag stecken?

Die Variablen sind wie folgt definiert:

$nachname = $_POST[nachname]; 
$ip = $_SERVER[REMOTE_ADDR];

Der $_POST[nachname] kommt aus einem Textfeld, eine Datei davor :)

Thx for help!

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Malloc, 57



$statement = $pdo->prepare("INSERT INTO IP (IP,nachname) VALUES (?,?)"); 
$statement->bind_param("ss",$ip,$nachname);
$statement->excecute();





Kommentar von MinecrafterPG ,

Da gibt er mir nen Error: 

Warning: PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in writetest.php on line 10

Fatal error: Call to undefined method PDOStatement::bind_param() in writetest.php on line 12

<?php

$nachname = $_POST[nachname];
$ip = $_SERVER[REMOTE_ADDR];

$pdo = new PDO('mysql:host=localhost;dbname=ZENSIERT', 'ZENSIERT', 'ZENSIERT');

$statement = $pdo->prepare("INSERT INTO IP (IP,nachname) VALUES (?,?)");
$statement->execute(array($ip));

$statement->bind_param("ss",$ip,$nachname);

$statement->excecute();
?>
Kommentar von mastema666 ,
$statement->bind_param("ss",$ip,$nachname);

Das ist auch mysqli Syntax, du benutzt aber PDO, da könnte das z.B. so aussehen:

$sql = "INSERT INTO IP SET IP = :ip, nachname = :nachname";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(':ip', $ip);
$stmt->bindvalue(':nachname', $nachname);
$stmt->execute();
Kommentar von MinecrafterPG ,

Danke für deine Antwort, mastema66! Funktioniert! :)

Antwort
von Malloc, 36
  1. Du darfst nicht 2x Excecute aufrufen
  2. Das INSERT VALUES muss der Anzahl und Definierung deiner Datenbank-Tabelle entsprechen. (In meinem Beispiel oben hat die Tabelle 2 Spalten)

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten