Ich habe eine SQL $ Abfrage wie folgt;Warum kann ich Zeilen mit PDO nicht mit Prepare-Funktion aktualisieren?
UPDATE `tags` SET `tags.name` = :name,
`tags.slug` = :slug,
`tags.date_published` = :date_published,
`tags.meta_title` = :meta_title,
`tags.meta_description` = :meta_description,
`tags.meta_keywords` = :meta_keywords
WHERE `tags.id` = :id
Und meine Werte $ Array;
Array
(
[:name] => iphone
[:slug] => iphone
[:date_published] => 2016-03-27
[:meta_title] => iphone Yazıları
[:meta_description] => iphone hakkında son gelişmeler ve faydalı bilgiler.
[:meta_keywords] => iphone yazıları, iphone hakkında bilgiler, iphone haberleri
[:id] => 24
)
Ich versuche, eine Zeile mit PDO Prepare-Funktion zu aktualisieren;
$sth = $this->db->prepare($query);
$sth->execute($values);
echo "affected rows: ".$sth->rowCount(); // prints 0
return $sth->rowCount() ? true : false;
Und ich bekomme keine Fehler, aber Zeilen sind nicht betroffen, nachdem die Abfrage ausführen. Wo ist mein Fehler?
edit: Ich Werte Array wie folgt zu schaffen;
$params = array(
"id", "name", "slug", "date_published",
"meta_title", "meta_description", "meta_keywords");
$values = array();
foreach ($params as $key) {
@$values[$key] = $_POST[$key];
}
Und das ist, wie ich die Abfrage erstellen;
$query = "UPDATE `$table` SET";
$values = array();
/* Add field names and placeholders to query. */
foreach ($params as $key => $value) {
$query .= " `{$table}.{$key}` = :" . $key . ",";
$values[":" . $key] = $value;
}
/* Remove last comma. */
$query = substr($query, 0, -1);
/* Build where condition. */
if ($cond) {
$query .= " WHERE ";
foreach ($cond as $key => $value) {
$query .= " `{$table}.{$key}` = :" . $key . ",";
$values[":" . $key] = $value;
}
/* Remove last comma. */
$query = substr($query, 0, -1);
}
Ihr Array sieht seltsam aus. Können Sie Ihren PHP-Code dort zeigen, wo Sie dieses Array erstellt haben? –
Es scheint, dass Sie phpMyAdmin verwenden. Haben Sie (in phpMyAdmin) bestätigt, dass die Zeilen tatsächlich nicht betroffen sind? Dadurch können Sie feststellen, ob das Problem mit Ihrer Abfrage oder mit 'rowCount()' zusammenhängt. – alexw
Wenn Sie auf die gleichen Daten aktualisieren, dann gibt es keine Aktualisierung heppens und somit Zeilenanzahl ist 0. –