Имя: Пароль:
IT
Веб-мастеринг
Как вернуть параметров больше одного MYSQL параметров в PHP ?
,
0 antihacker
 
13.10.17
13:15
Всем привет !

Есть процедура в майсикл который возвращает несколько параметров. В PHPMyAdmin  процедура срабатывает без проблем. А вот не получаеться в PHP обращаться к этой процедуре.

Делаю так

        mysql_query("CALL prc_selected_page_version('".$_SESSION['selected_page_version_id']."',@prm_page_name,@prm_version_type,@prm_root_site_name);") or die(mysql_error());
        $result = mysql_query("SELECT @prm_page_name");
        echo mysql_result($result, 0);

Или надо по другому
1 antihacker
 
13.10.17
13:21
Ав вот процедура

BEGIN
SELECT

dbdev_main_page_tbl.version_type,dbdev_main_page_tbl.version_name,dbroot_site_tbl.root_site_name,dbdev_main_page_tbl.from_root_site_id,dbroot_site_tbl.root_site_id,dbdev_main_page_tbl.main_page_id  

FROM dbdev_main_page_tbl,dbroot_site_tbl

where
dbdev_main_page_tbl.from_root_site_id = dbroot_site_tbl.root_site_id
and  

dbdev_main_page_tbl.main_page_id=prm_page_version_id;

SET @prm_page_name       =  (SELECT dbdev_main_page_tbl.version_name);
SET @prm_version_type    =  (SELECT dbdev_main_page_tbl.version_type);
SET @prm_root_site_name  =  (SELECT dbroot_site_tbl.root_site_name);
END
2 asady
 
13.10.17
13:27
echo "CALL prc_selected_page_version('".$_SESSION['selected_page_version_id']."',@prm_page_name,@prm_version_type,@prm_root_site_name);";

что у тебя выводит?
3 antihacker
 
13.10.17
13:35
Как что его как текст и выводит
4 Asmody
 
13.10.17
13:36
(0) надо по-другому. надо читать мануал.
5 antihacker
 
13.10.17
13:39
В инете что то по другому не нашел.
6 Asmody
 
13.10.17
13:40
(5) Мануал вот здесь http://php.net/manual/ru/function.mysql-result.php
7 antihacker
 
13.10.17
13:42
Там вообще про хранимых процедур ничего нету.
8 antihacker
 
13.10.17
13:45
Вот это  работает без проблем

    mysql_query("CALL prc_add_main_page('".$_SESSION['Sroot_site_id']."','".$Selected_PageVersionName."',@last_id);") or die(mysql_error());
    $result = mysql_query("SELECT @last_id");
    $_SESSION['selected_page_version_id'] = mysql_result($result, 0);
9 Asmody
 
13.10.17
13:47
(7) Хранимые процедуры вообще не при чём. Сделай через mysqlfetch*
10 Asmody
 
13.10.17
13:47
mysql_fetch_*
11 antihacker
 
13.10.17
14:10
Спасибо. Получилось.

        $result = mysql_query("CALL prc_selected_page_version('".$_SESSION['selected_page_version_id']."',@prm_page_name,@prm_version_type);") or die(mysql_error());

        if (!$result) {echo 'Ошибка запроса: ' . mysql_error(); exit;}
        $row = mysql_fetch_row($result);

        echo $row[0]; // 42
        echo "/";
        echo $row[1]; // 42
        echo "/";
        echo $row[2]; // 42
12 antihacker
 
13.10.17
14:12
Только вот если значение параметра на русском, то вопросительные знаки.
13 Asmody
 
13.10.17
15:29
(12) кодировку смотри.
14 Asmody
 
13.10.17
15:30
и вообще, используй mysqli*, а не mysql*
библиотека mysql_ считается устаревшей.