Ich habe eine Frage zu meinem CRUD-Plugin. Ich arbeite an der Aktualisierung Abschnitt und wenn ich die Abfrage aktualisieren, erhalten alle Spalten die ': ID' als Wert und nicht ihre eigenen.PDO-Abfrage doppelte Bindung statt ihrer eigenen
Unter meinem debugDumpParams();
string(7) "column1"
string(4) "help"
string(7) "column2"
string(4) "help"
string(2) "id"
string(1) "4"
SQL: [69] UPDATE test SET column1 = :column1, column2 = :column2 WHERE id = :id
Params: 3
Key: Name: [8] :column1
paramno=-1
name=[8] ":column1"
is_param=1
param_type=2
Key: Name: [8] :column2
paramno=-1
name=[8] ":column2"
is_param=1
param_type=2
Key: Name: [3] :id
paramno=-1
Al andere Abschnitte meines CRUD arbeiten und der Einsatz arbeitet fast auf die gleiche Weise, so dass ich keine nicht, was ich worng tun, vielleicht jemand von außerhalb des eror sehen, dass ich nicht sehen kann .
Unter meinen Code:
}elseif($type == 'update') {
$columns = array_keys($column);
$col_set = implode(",",$columns);
$query_array = array();
foreach ($column as $key => $value) {
if($key == 'id'){
$query_array_id = $key.' = :'.$key;
}else{
$query_array[] = $key.' = :'.$key;
}
}
$query = ''.$query.' '.$table.' SET '.implode(", ",$query_array).' WHERE '.$query_array_id.'';
$dbh_query = $dbh->prepare($query);
foreach ($column as $key => $value) {
$dbh_query->bindParam(':'.$key, $key);
var_dump($key);
$key = trim($value);
var_dump($key);
}
$dbh_query->execute();
$dbh_query->debugDumpParams();
echo '<br/>';
return $dbh_query;
}
unter dem, was ich in der Datenbank erhalten:
'column1' => '4',
'column2' => '4',
'id' => '4'
Das ist falsch, weil meine Funktionsaufruf:
$postFile->processing('update', 'test', array(
'column1' => 'help',
'column2' => 'help',
'id' => '4'
));
Vielen Dank!
UPDATE!
Ändern Sie ein wenig von meinem Code und es funktioniert, vielen Dank!
}elseif($type == 'update') {
$columns = array_keys($column);
$col_set = implode(",",$columns);
$query_array = array();
foreach ($column as $key => $value) {
if($key == 'id'){
$query_array_id = $key.' = :'.$key;
}else{
$query_array[] = $key.' = :'.$key;
}
}
$query = ''.$query.' '.$table.' SET '.implode(", ",$query_array).' WHERE '.$query_array_id.'';
$dbh_query = $dbh->prepare($query);
$dbh_query->execute($column);
return $dbh_query;
$ dbh_query-> bindParam (stark gefährdet ist ':' $ key, $ key.); -> $ dbh_query-> bindParam (':'. $ key, $ value); – Pete
Pieter, dank für jede reactie, alle de $ key moet het zelfde zijn omdat in trimmen de wert wordt gedefiniëerd –