Задавайте вопросы, мы ответим
Вы не зашли.
Подскажите как можно поступить если в процедуру нужно передавать что то вроде массива, ну типа arr[0]='Таблетки по 50мг' , arr[1]='Таблетки по 100мг' и т.д. , что бы потом через for вызывать соответствующий insert
Неактивен
Никак. Но можете сделать временную табличку, которая будет использоваться этой процедурой.
Неактивен
paulus написал:
Никак. Но можете сделать временную табличку, которая будет использоваться этой процедурой.
ТО есть Временная таблица, туда допустим я загнал массив $arr[n], у меня будет значит во временной таблице n-строк, потом я к этои таблицы оброщяюсь из процедура и FOR-м делаю insert , я правельно понял?
Неактивен
Ну или просто INSERT SELECT
Неактивен
paulus написал:
Ну или просто INSERT SELECT
INSERT SELECT ??? Первый раз слышу)) Щя пороюсь. Спасибо!
Неактивен
Ну ваще, жизнь еще легче стала)
Неактивен
В принципе в ХП массив из клиента загнать не проблема.
for и т.п. естественно на клиенте лучше сделать - на кой делать пачку инсертов если можно сделать один инсерт пачки записей.
см. в конце топика
http://sqlinfo.ru/forum/viewtopic.php?id=363
Неактивен
EugeneTM написал:
В принципе в ХП массив ИЗ КЛИЕНТА загнать не проблема.
Что то из ПХП терь не получаеться загнать, все делаю как в топе!
CREATE DEFINER=`root`@`localhost` PROCEDURE `test_ins`(ins_val varchar(21000))
begin
set @var = concat('insert into test1 values', ins_val);
prepare zxc from @var;
execute zxc;
end;
из клиента так :
Неактивен
А зачем в PHP Вы используете слово DELIMITER? Оно же клиентское...
mysql_query ("set @stri="(1,\'privet\'),(2,\'poka\')");
mysql_query ("call test_ins(@stri)");
Неактивен
paulus написал:
А зачем в PHP Вы используете слово DELIMITER? Оно же клиентское
Я и так и без него тож пробовал!
Неактивен
Так, как я написал? Два запроса отдельно?
Неактивен
paulus написал:
Так, как я написал? Два запроса отдельно?
Да.
Неактивен
Я уже и вот так пробовал:
Неактивен
Это ограничение клиентских функций. Используйте mysqli_ вместо mysql, см. тему. http://sqlinfo.ru/forum/viewtopic.php?id=551
Неактивен
rgbeast написал:
Это ограничение клиентских функций. Используйте mysqli_ вместо mysql, см. тему. http://sqlinfo.ru/forum/viewtopic.php?id=551
Как в мануале делаю:
Неактивен
Должно быть установлено расширение mysqli у хостера
Неактивен
Другой вариант - использовать процедуру, которая ничего не возвращает, тогда ее можно выполнять из mysql_query();
Неактивен
Если допустим у меня в SP-е есть такая строка:
select count(*) into @somevar from XXX;
так же нужно improved расширение?
Неактивен
Должно сработать в mysql_query(). Попробуйте.
Неактивен
Не хочет)
Код SP:
delimiter //
Create procedure some_sp(num int, str varchar(255))
begin
insert into test1 values (num,str);
end;
//
Код PHP такой:
<?php
include("modules/config.php");
$first = 1;
$second = "asd";
$query = "call some_sp(1,'$second')";
?>
Извините опечатка))
Отредактированно Ovosh (14.01.2009 15:14:46)
Неактивен
paulus написал:
а вызвать?
да забыл напечатать) Но все равно не работает!
Что делать, я понятия не имею как соберать с поддержкой mysqlI
Неактивен
А сервер Ваш или у хостера какого-то?
Неактивен
Интересная вещь!
На работе выше пример не работал, в домои пришол с горя потыкал и все заработало!
Хотя установку делал с одного HOWTO!
На работе локальный сервер ОСЬ WindowsXP, apache_2.0.50-win32-x86-no_ssl, mysql-5.0.67-win32, php - 5. И дома это же стоит!
Неактивен
Подземный стук?
Настройки посравнивайте еще.
Неактивен