LINUX.ORG.RU

mysql stored procedure почему-то срабатывает только один раз


0

1

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

Структура таблицы: id,childs(потомки данной ветви через запятую), name.

Процедура:

mysql_query('
      create procedure getBranchData(IN id_ int)
      begin
	select * from branches where id=id_;
      end');
Используется так:
class branch
{
  private $childs = array();
  private $id,$name;
  function __construct($id_) {
    $this->id = $id_;
    $res = mysql_query('call getBranchData('.$this->id.')');
    $arr = mysql_fetch_array($res);
    $this->name = $arr['name'];
    $chi = explode(",",$arr['childs']);
    foreach($chi as $ch)
    {
      if($ch!=$this->id && !empty($ch))
      {
	$br = new branch($ch);
	$this->childs[] = $br;
      }
    }
  }
}
$el0 = new branch(1);
При попытке приписать первого потомка в mysql_fetch_array передается false, хотя, если не создавать объект, а вызвать процедуру напрямую 1 раз, все работает. Из-за чего такое может получаться?

★★★★

Включи детальное логирование и посмотри, что происходит, вызывается ли процедура и с какими параметрами. И вообще, может у тебя соединение с БД не установлено :)

SOmni ★★
()
Ответ на: комментарий от SOmni

нет, ничего более осмысленного, чем

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /var/www/localhost/htdocs/ss/index.php on line 12
добиться не удалось(

wingear ★★★★
() автор топика
Ответ на: комментарий от wingear

Я имел в виду детальное логирование в самом mysql-е. Я по его администрированию не очень силён, но, например, в PG можно включить логирование вообще всех запросов, и там будет видно, как и с какими параметрами что-то вызывается. Предполагаю, что в mysql такое тоже есть. Ошибки, которые видно в пыхе, тебе не помогут, скорее всего.

SOmni ★★
()
Ответ на: комментарий от anonymous

Спасибо. Правда, название ветви по-прежнему не передается рекурсивно, только id, но уже что-то.

Оказывается, там надо было multi_query использовать: http://habrahabr.ru/blogs/webdev/21326/

wingear ★★★★
() автор топика
Ответ на: комментарий от SOmni

Нет, всё равно та же ошибка, даже при использовании рецепта с Хабры:(

Пока буду без процедур тогда

wingear ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.