Moin!
ich möchte einen Datensatz mittels PDO ändern und habe dafür eine Funktion erstellt die zugehörige Ausdrucke aus Namen zusammenstellt.
Die Funktion sieht wie folgt aus:
Ich habe einige Kontrollausgaben gemacht und bekomme folgendes angezeigt:
Als Fehlermeldung bekomme ich (das ist die Zeile mit $update->bindValue):
Ich kann das nicht nachvollziehen.
Eine Abfrage aus der Datenbank habe ich beireits weiter oben erfolgreich ausgeführt. Damit ist die Verbindung ok.
$update wird ja auch schon einmal ausgeführt und obwohl ich dieses in ein try-catch gelegt habe wird dort kein Fehler angezeigt.
Kann mir einer weiterhelfen? Vielleicht wie ich mir Parameter für die Variable $update anzeigen lassen kann. Derzeit macht diese für mich nur einen leeren Eindruck.
Gruß Jan
ich möchte einen Datensatz mittels PDO ändern und habe dafür eine Funktion erstellt die zugehörige Ausdrucke aus Namen zusammenstellt.
Die Funktion sieht wie folgt aus:
PHP-Code:
public function PDO_CreateSQL2Update($index){
$PDO_statement = "UPDATE `".$this->tabelle."` SET ";
$seperator_statement = "";
foreach ($this->controls as $control)
{
if ($control["column"] != "ID"){ //ID übergeben
// prepare() bereitet die Anweisung für die Ausführung vor.
$PDO_statement .= $seperator_statement."'".$control["column"]."` = :".$control["column"];
$seperator_statement = ",";
}//endif
}//end-foreach
// ID anhängen mit dem WHERE ....
$PDO_statement .= " WHERE `id` = :id)";
echo "PDO_statement:= ".$PDO_statement."<br>\n";
try {
$update = $this->db->prepare($PDO_statement);
} catch (Exception $e) {
echo 'Exception abgefangen: ', $e->getMessage(), "\n";
}
echo "update:<br>\n";
print_r($update);
foreach ($this->controls as $control)
{
$befehl = "':".$control["column"]."'";
echo "bind:= ".$befehl."<br>\n";
echo "post:= ".$_POST[$control["column"]]."<br>\n";
$update->bindValue(":".$control["column"], $_POST[$control["column"]]);
}//end-foreach
// $update->execute() führt die vorbereitete Anweisung aus.
if ($update->execute()) {
echo '<p>Die Nachricht wurde überschrieben.</p>';
} else {
// SQL-Fehlermeldung anzeigen.
print_r($update->errorInfo());
} // endif
}//end-CreateSQL2Update
// Überschrift für die laufende Nummer
public function CreateHeaderLfd(){
if ($this->lfd_nr > -1){
$this->CreateCell("Lfd-Nr.",true);
}//endif
}//end-function-PDO_CreateSQL2Update
PDO_statement:= UPDATE `RECHNER` SET 'PCNUMMER` = :PCNUMMER,'ID_BETRIEBSSYSTEME` = :ID_BETRIEBSSYSTEME,'ID_ANWENDER` = :ID_ANWENDER,'ID_SACHGEBIETE` = :ID_SACHGEBIETE,'ID_BEREICHE` = :ID_BEREICHE,'CONFIG` = :CONFIG,'IS_STANDARD_TB` = :IS_STANDARD_TB,'IS_AKTIV` = :IS_AKTIV,'ANMERKUNG` = :ANMERKUNG WHERE `id` = :id)
update:
bind:= :PCNUMMER
post:= RW15-PC-002
update:
bind:= :PCNUMMER
post:= RW15-PC-002
Fatal error: Call to a member function bindValue() on boolean in C:\PHProject\EBL_SoftwareInventar\ebl_class_crud.p hp on line 865
Ich kann das nicht nachvollziehen.
Eine Abfrage aus der Datenbank habe ich beireits weiter oben erfolgreich ausgeführt. Damit ist die Verbindung ok.
$update wird ja auch schon einmal ausgeführt und obwohl ich dieses in ein try-catch gelegt habe wird dort kein Fehler angezeigt.
Kann mir einer weiterhelfen? Vielleicht wie ich mir Parameter für die Variable $update anzeigen lassen kann. Derzeit macht diese für mich nur einen leeren Eindruck.
Gruß Jan
Kommentar