Прошу помощи по MySQL

M2
На сайте с 11.01.2011
Offline
341
469

В общем такая проблема. Пытаюсь удалить объект (не важно какой, важно что он в базе данных). Получаю сообщение:


Warning: mysql_query(): Unable to save result set in D:\WebSites\clevercms.ru\classes\class_mysql.php on line 103

Смотрим в class_mysql.php:


96public function query($text)
97 {
98 if (empty($text))
99 {
100 return false;
101 }
102
103 $id = mysql_query($text);
104
105 if (is_resource($id))
106 {
107 $this->query_id = $id;
108 }
109
110 else
111 {
112 $this->query_id = false;
113 }
114
115 return $this->query_id;
116 }

Вот ничего прямо такого нет... тем более, что этот метод query с успехом выполняется в других частях системы.

Что самое обалденное, что вот эта конструкция:


$id = mysql_query($text);

в результате обращается в тип resource, т.е. по идее запрос успешно выполняется. Но из базы ничего не удаляется, из-за этой ошибки.

Пробовал переставлять MySQL (был 5.5, поставил 5.1). Ниже пятёрки не поставлю ))) что это ещё может быть?

Да, вот ещё код для удаления подраздела (то, что я пытаюсь сделать). Код выдернут из файла ajax, просто для наглядности:


case 'delete_subcat':
$subcat_id = $_POST['subcatID'];

$db->query('SELECT subcat_id FROM pages_subcategories WHERE subcat_id = ' . $subcat_id);
$rows = $db->get_rows_count();

if ($rows < 1)
{
$result['result'] = false;
$result['error'] = 'Подраздела, который вы хотите удалить, не существует';
die(json_encode($result));
}

if (!action_allowed($_COOKIE['admin_user_group'], 'can_delete_subcategory'))
{
$result['result'] = false;
$result['error'] = 'Вам не разрешено удалять подразделы';
die(json_encode($result));
}

//получаем список страниц, которые содержатся в подразделах данного раздела
$db->query('SELECT page_id, page_file_name FROM pages WHERE subcategory_id = ' . $subcat_id);
$p_rows = $db->get_rows_count();

$file_names = array();

while ($data = $db->parse_query('array'))
{
$file_names[] = $data['page_file_name'];
}

foreach ($file_names as $name)
{
unlink($_SERVER['DOCUMENT_ROOT'] . '/' . $name . '.php');
unlink($_SERVER['DOCUMENT_ROOT'] . '/templates/' . $name . '.tpl');
}

$db->query('DELETE FROM pages WHERE subcategory_id = ' . $subcat_id);
if ($db->hasError())
{
$result['result'] = false;
$result['error'] = 'Невозможно удалить страницы, относящиеся к подразделу';
die(json_encode($result));
}

$db->query('DELETE FROM pages_subcategories WHERE subcat_id = ' . $subcat_id);
if ($db->hasError())
{
$result['result'] = false;
$result['error'] = 'Невозможно удалить подраздел';
die(json_encode($result));
}

else
{
$result['result'] = true;
die(json_encode($result));
}
break;

Где эта ошибка может иметь место - ума не приложу.....:confused:

------------------- Крутые VPS и дедики. Качество по разумной цене ( http://cp.inferno.name/view.php?product=1212&gid=1 ) VPS25OFF - скидка 25% на первый платеж по ссылке выше
A
На сайте с 04.03.2011
Offline
20
#1

чините mysql, таблица сломалась

M2
На сайте с 11.01.2011
Offline
341
#2

asdqwe

Так-то понятно... уже чинил (repair table). Но во-первых статус у таблицы нормальный, во-вторых починка ничего не даёт...

mark2011 добавил 25.03.2011 в 09:48

Собственно, вопрос закрыт.

Имела место следующая гадость:


#1242 - Subquery returns more than 1 row

Кстати, очень трудно отлавливаемая гадость... ))) Причём, это было во внутреннем запросе.... поэтому вполне естественно, что раз внутренний запрос возвращал такое, то и внешний не мог сохранить результирующий набор данных, поскольку его просто не существовало в природе (внутренний запрос возвращал ошибку, и до внешнего просто дело не доходило).

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий