Jnnbo: $mysqli->insert_id wird nicht übernommen

Beitrag lesen

Hallo TS,

Umkopieren der POST-Variablen ist nicht mehr notwendig. Wenn die "as it is" in die Datenbank sollen, kannst Du die direkt ins Bind einsetzen.

das heißt aus diesem

if ($stmt = $mysqli->prepare("INSERT INTO web_produkttypen (py_titel, py_status) VALUES (?, ?)"))
{    
  $py_titel 	= $_POST["titel"];
  $py_status 	= $_POST["status"];
  
  $stmt->bind_param("ss", $py_titel, $py_status);
  $stmt->execute();
}
  else {
  echo $mysqli -> error;
}

kann ich auch dieses machen?

if ($stmt = $mysqli->prepare("INSERT INTO web_produkttypen (py_titel, py_status) VALUES (?, ?)"))
{      
  $stmt->bind_param("ss", $_POST["titel"], $_POST["status"]);
  $stmt->execute();
}
  else {
  echo $mysqli -> error;
}

Du musst übrigens sie Statements nicht immer neu preparen. Sosie die Verbindung steht, kannst Du die Statements, die Du immer brauchst, auch sammeln:

$stmt['insert_id'] = $mysqli->prepare("INSERT INTO web_preis_settings set ps_pTypID = ?  
$stmt['insert_prod] = $mysqli->prepare("INSERT INTO web_produkttypen (py_titel, py_status) VALUES (?, ?)"))  

usw.

Und dann brauchst Du nur noch die frischen Variablen an das passende Statement zu binden und das Query absenden. Das ist bei komplexeren Statements schon mal ganz praktisch.

das habe ich leider nicht verstanden :7 Hast du mir da irgendeine Quelle? Oder kannst du mir dieses an meinem Beispiel nochmals genauer erklären, wie das Ergebnis dann aussehen würde?

if ($stmt = $mysqli->prepare("INSERT INTO web_produkttypen (py_titel, py_status) VALUES (?, ?)"))
{      
  $stmt->bind_param("ss", $_POST["titel"], $_POST["status"]);
  $stmt->execute();
}
  else {
  echo $mysqli -> error;
}

if ($stmt = $mysqli->prepare("INSERT INTO web_preis_settings (ps_pTypID) VALUES (?)"))
{    
  $ps_pTypID 	= $mysqli->lastInsertId();

$stmt->bind_param("s", $ps_pTypID);
  $stmt->execute();
}
else {
  echo $mysqli -> error;
}