我遇到了以下问题。 我有一系列我想要更新的项目。以下是我的代码:
public function addTranslation( $data = array(), $language ) {
// Add all words to language
$stmt = $this->_db->prepare("UPDATE `languages` SET `$language` = ? WHERE `id` = ?");
$stmt->bind_param('si', $translation, $id);
$count = 0;
foreach( $data as $id => $translation ) {
$stmt->execute();
if( !empty( $translation ) ) {
$count++;
}
}
// Check if all filled in words are added
echo $stmt->affected_rows;
if( $stmt->affected_rows >= $count ) {
return true;
} else {
return false;
}
}
我知道查询工作正常,因为当我在脚本运行后检查了我的数据库时,更新的值就在那里。 $stmt->affected_rows
也适用于其他地方。我遇到的问题是,我想检查所有填写的字段是否都已更新,但即使字段更新,affected_rows
也始终返回0。
这是否与我使用一系列项目更新这一事实有关?
我希望有人可以解决这个问题。
答案 0 :(得分:2)
affected_rows
仅适用于上一个execute
。试试这个:
public function addTranslation( $data = array(), $language ) {
// Add all words to language
$stmt = $this->_db->prepare("UPDATE `languages` SET `$language` = ? WHERE `id` = ?");
$stmt->bind_param('si', $translation, $id);
$count = 0;
$affected = 0;
foreach( $data as $id => $translation ) {
$stmt->execute();
$affected += $stmt->affected_rows;
if( !empty( $translation ) ) {
$count++;
}
}
// Check if all filled in words are added
echo $affected;
if( $affected >= $count ) {
return true;
} else {
return false;
}
}