Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/68: Рейтинг темы: голосов - 68, средняя оценка - 4.90
17 / 5 / 3
Регистрация: 22.03.2011
Сообщений: 329

PHP. Вызов хранимой процедуры с параметрами

10.12.2012, 11:15. Показов 13711. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет ПєХєПєшникам! Пересоздам тему здесь, ибо в разделе для MySQL ей не место.
Столкнулся с проблемой при вызове процедуры из PHP-скрипта. Сама процедура получает 2 значения типа VARCHAR и заносит их в соответствующие поля таблицы.
SQL
1
2
3
4
CREATE DEFINER =  `server`@`%` PROCEDURE  `proc_login` ( IN  `param_l` VARCHAR( 20 ) , IN  `param_p` VARCHAR( 20 ) ) NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER
 BEGIN 
INSERT INTO logins( login, pass ) VALUE (param_l,param_p);
END
При вызове этой процедуры из интерфейса "PHP My Admin" - все замечательно работает.
Но при вызове из PHP скрипта при помощи строки
PHP
1
$q=mysql_query("CALL 'proc_login' ($log,$pass);");
Получаю ошибку
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''proc_login' (mylogin,mypass)' at line 1
Умоляю! объясните что тут не так и как решить эту проблему!
Заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.12.2012, 11:15
Ответы с готовыми решениями:

Вызов хранимой процедуры
Доброго времени суток проблема в том что не могу вызвать из php хранимую процедуру с параметрами в MySQL пробовал вот так результат 0 ...

вызов хранимой процедуры с параметрами через dynamic data linq to sql
Добро! У меня есть БД (sql server r2). Там есть хранимая процедура. Я создал проект на asp.net dynamics data, добавил класс linqtosql,...

Нужен пример на OleDb - заполнение ДатаГрида через вызов хранимой процедуры с параметрами. (ASP.NET)
Процедура CREATE PROCEDURE pr_GetClient @pID_Customer INT, @pName varchar(30), @pZip varchar(6) With Recompile AS ...

9
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
10.12.2012, 11:32
Попробуйте вызвать процедуру без точки с запятой в конце sql команды
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
10.12.2012, 12:22
апострофы уберите вокруг proc_login, может в этом дело
0
17 / 5 / 3
Регистрация: 22.03.2011
Сообщений: 329
10.12.2012, 16:00  [ТС]
Если без апострофов, то вот эта ошибка вылазит
Unknown column 'login' in 'field list' где login - значение, которое я вводил в HTML форму
Если без точки с запятой в конце, но с апострофами
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''proc_login' (mylogin,mypass)' at line 1
0
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
10.12.2012, 16:50
Не знаю поможет ли, нет ли, я использую PDO и для работы с процедурами применяю следующие костыли:
PHP
1
2
3
$var = "var_value";
$pdo->exec("set @buf='$var'");//создаю переменную sql и присваиваю ей значение
$pdo->exec("call sp_test(@buf)");//вызываю процедуру с переменной-аргументом
Т.е. не передаю аргументы при вызове процедуры, а в sql создаю переменную (@buf), присваиваю ей значение, а затем вызываю процу подставляя ей аргументом созданную переменную sql, а не напрямую из php. Так можно даже получить значение INOUT из процедуры... Возможно в расширении mysql нужно делать что-то похожее
1
17 / 5 / 3
Регистрация: 22.03.2011
Сообщений: 329
10.12.2012, 17:03  [ТС]
Цитата Сообщение от casual_visitor Посмотреть сообщение
Не знаю поможет ли, нет ли, я использую PDO и для работы с процедурами применяю следующие костыли:
PHP
1
2
3
$var = "var_value";
$pdo->exec("set @buf='$var'");//создаю переменную sql и присваиваю ей значение
$pdo->exec("call sp_test(@buf)");//вызываю процедуру с переменной-аргументом
Т.е. не передаю аргументы при вызове процедуры, а в sql создаю переменную (@buf), присваиваю ей значение, а затем вызываю процу подставляя ей аргументом созданную переменную sql, а не напрямую из php. Так можно даже получить значение INOUT из процедуры... Возможно в расширении mysql нужно делать что-то похожее
заработало
PHP
1
2
3
$q=mysql_query("set @buf='$log'");
$q=mysql_query("set @buf2='$pass'");
$q=mysql_query("CALL proc_login (@buf,@buf2);");
спасибо большущее! я-то тоже до этого додумался, и пробовал таким методом сделать, но не получалось чего-то, а сейчас все работает =)
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
10.12.2012, 17:53
Цитата Сообщение от lawliet93 Посмотреть сообщение
PHP
1
2
3
$q=mysql_query("set @buf='$log'");
$q=mysql_query("set @buf2='$pass'");
$q=mysql_query("CALL proc_login (@buf,@buf2);");
Попов и здесь уже?
PHP
1
2
3
4
$log  = mysql_real_escape_string($log);
$pass = mysql_real_escape_string($pass);
mysql_query("CALL `proc_login`('$log', '$pass');")
    or die(mysql_error());
0
87 / 87 / 8
Регистрация: 02.09.2012
Сообщений: 510
10.12.2012, 18:11
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Попов и здесь уже?
А можно по подробнее, я не попов Даже никогда его не читал.. Просто интересно. Передача аргументов в хранимки, а тем более возврат их значений - старый косяк... уж не знаю php или mysql.. Как mysql_real_escape_string может повлиять на ситуацию?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
10.12.2012, 18:32
Цитата Сообщение от casual_visitor Посмотреть сообщение
А можно по подробнее, я не попов
Не берите в голову. Хорошо, что не слышали.

Ни к чему заводить две одноразовых переменных, да еще каждую в отдельном запросе. Можно напрямую передать значения при вызове функции.
1
17 / 5 / 3
Регистрация: 22.03.2011
Сообщений: 329
10.12.2012, 18:45  [ТС]
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Попов и здесь уже?
PHP
1
2
3
4
$log  = mysql_real_escape_string($log);
$pass = mysql_real_escape_string($pass);
mysql_query("CALL `proc_login`('$log', '$pass');")
    or die(mysql_error());
Я тож не читал Попова xD А о функции mysql_real_escape_string даже и не знал, терь постоянно буду у Вас спрашивать ответы на свои вопросы xD
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.12.2012, 18:45
Помогаю со студенческими работами здесь

Вызов хранимой процедуры в Oracle с параметрами QList<double>, QList<QDateTime>, QList<quint64>
Добрый день, уважаемые форумчане. Необходимо в хранимую процедуру в Oracle передать параметры, являющиеся списками: QList&lt;double&gt;,...

Выполнение хранимой процедуры с выходными параметрами
В базе данных MS SQL есть хранимая процедура Come с выходными параметрами (output) @e1, @e2 типа nvarchar. По нажатию на кнопку нужно...

Вызов хранимой процедуры
Добрый день У меня есть процедура хранимая в MySQL на добавление строки CREATE DEFINER = `root`@`%` PROCEDURE `NewProc`(IN `fam`...

Вызов хранимой процедуры
Здравствуйте уважаемые форумчане. Уткнулся лбом и не знаю что дальше делать. Прошу Вашего совета. Ситуация такая: Есть храним. процедура...

Вызов хранимой процедуры
Привет! У меня есть база данных и запрос, написанный на SQL в сишарпе. Таблица из базы данных отображается в DataGridView. Мне нужно, чтобы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru