borisbaer: Update-Methode aktualisiert nicht die entsprechenden Spalten in der Datenbank (ohne Fehlermeldung)

Beitrag lesen

Hallo zusammen,

ich habe folgenden Code in meiner Update-Methode …

protected function update( array $columns = [], array $condition = [] ): void

{

	$table = $this -> getTable();

	$attrs = array_merge( $columns, $condition );

	$columns = implode( ' AND ', array_map( fn( $attr ) => "$attr = :$attr", $columns ) );

	$condition = implode( ' AND ', array_map( fn( $attr ) => "$attr = :$attr", $condition ) );

	$stmt = self::prepare( "UPDATE $table SET $columns WHERE $condition" );

	foreach ( $attrs as $attr )

		$stmt -> bindValue( ":$attr", $this -> { $attr } );

	$stmt -> execute();

}

... und rufe sie bspw. so auf …

$games -> update( [ 'franchise' ], [ 'gameID' ] );.

Wenn ich den columns-Array um einen zusätzlichen String ergänze, z. B. so ...

$games -> update( [ 'franchise', 'platform' ], [ 'gameID' ] );

... dann aktualisiert die Methode die entsprechenden Spalten in der Datenbank nicht bzw. wird beim angegeben Eintrag für franchise eine 0 gesetzt und platform bleibt unverändert. Bei nur einem String im Array funktioniert das Update übrigens.

Ich verstehe beim besten Willen nicht, was da schiefläuft.

Was übersehe ich?

Grüße
Boris

akzeptierte Antworten