Avoid duplicated queries
This commit is contained in:
parent
b9b43e30e6
commit
0241a88c0d
1 changed files with 12 additions and 2 deletions
|
@ -785,7 +785,7 @@ class dba {
|
||||||
*
|
*
|
||||||
* @return boolean|array was the delete successfull? When $in_commit is set: deletion data
|
* @return boolean|array was the delete successfull? When $in_commit is set: deletion data
|
||||||
*/
|
*/
|
||||||
static public function delete($table, $param, $in_commit = false, $callstack = array()) {
|
static public function delete($table, $param, $in_commit = false, &$callstack = array()) {
|
||||||
|
|
||||||
$commands = array();
|
$commands = array();
|
||||||
|
|
||||||
|
@ -797,7 +797,7 @@ class dba {
|
||||||
return $commands;
|
return $commands;
|
||||||
}
|
}
|
||||||
|
|
||||||
$callstack[$key] = $key;
|
$callstack[$key] = true;
|
||||||
|
|
||||||
$table = self::$dbo->escape($table);
|
$table = self::$dbo->escape($table);
|
||||||
|
|
||||||
|
@ -824,6 +824,16 @@ class dba {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// Create a key for preventing double queries
|
||||||
|
$qkey = $field.'-'.$table.':'.implode(':', array_keys($param)).':'.implode(':', $param);
|
||||||
|
|
||||||
|
// We quit when this key already exists in the callstack.
|
||||||
|
if (isset($callstack[$qkey])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$callstack[$qkey] = true;
|
||||||
|
|
||||||
// Fetch all rows that are to be deleted
|
// Fetch all rows that are to be deleted
|
||||||
$sql = "SELECT ".self::$dbo->escape($field)." FROM `".$table."` WHERE `".
|
$sql = "SELECT ".self::$dbo->escape($field)." FROM `".$table."` WHERE `".
|
||||||
implode("` = ? AND `", array_keys($param))."` = ?";
|
implode("` = ? AND `", array_keys($param))."` = ?";
|
||||||
|
|
Loading…
Reference in a new issue