Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/35: Рейтинг темы: голосов - 35, средняя оценка - 4.66
0 / 0 / 1
Регистрация: 15.11.2012
Сообщений: 27

MSSQL + PHP + хранимая процедура

20.12.2012, 14:47. Показов 7015. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый всем вечер.
Проблема в том, что никак не могу запустить хранимую процедуру на MSSQL. В самой БД все работает отлично.
К базе коннектиться нормально(mssql_query работает нормально). Проблема возникает именно при вызове процедуры.
Итак, сама процедура:
T-SQL
1
2
3
CREATE PROCEDURE [dbo].proc_search_nomer @data date, @days int, @type varchar(10)
AS
--Тут какие-то действия с БД
Пример кода вызова процедуры:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
$stmt = mssql_init('proc_search_nomer',$link);
 
// Bind the field names
mssql_bind($stmt, '@days',  $srok,  SQLINT4,  false,  false);
mssql_bind($stmt, '@days',  $srok,  SQLINT1,  false,  false);
mssql_bind($stmt, '@type',  $type,  SQLVARCHAR,  false,  false,  10);
 
// Execute
mssql_execute($stmt);
 
// Free statement
mssql_free_statement($stmt);
Ошибка:
Bash
1
Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed in T:\home\localhost\www\search.php on line 35
Кстати, какой нужно использовать атрибут в функции mssql_bind, чтобы процедура получила переменную типа Date?
Т.е вот:
mssql_bind($stmt, '@days', $srok, SQLINT4, false, false);
Что вместо выделенного жирным нужно использовать, чтобы процедура получила переменную типа Date?

Добавлено через 18 часов 27 минут
Ребят, помогите, пожалуйста. Один не справлюсь
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.12.2012, 14:47
Ответы с готовыми решениями:

процедура на MSSQL (создание INSERT и возвращение @@Identity)
Всех приветствую, проблема вот небольшая. Весь инет перерыл, но все равно не понимаю в чем прикол Вроде бы и видел, что именно так и...

php и mssql
Подскажите пожалуйста. У меня есть программа, писал ее на C#, в программе реализованно подключение к mssql серверу, все уже давно написано...

MSSQL и PHP
Никак не могу их подружить. В php.ini добавил "extension=php_sqlsrv_53_ts.dll" В папку "C:\webserver\php\ext" положил библиотеку...

2
 Аватар для Totoro
47 / 23 / 3
Регистрация: 28.05.2012
Сообщений: 150
Записей в блоге: 1
21.12.2012, 07:29
Как я понял вы пытаетесь выполнить prepared statements средствами библиотеки mysql если не прав то поправьте, из этого хотел бы дать пару советов:

1. Перестать использовать библиотеку mysql это конечно хорошая библиотека и довольно таки быстрая но в PHP с версии 5.5 уже начнётся работа по обновлению документации и добавлению E_DEPRECATED ошибок к функциям mysql.

2. Поэтому советую посмотреть в сторону PDO или MySQLi(имеет также процедурный подход) обе они имеют ООП подход и реализация prepared statements там не в пример проще. По данной теме можно почитать сначала тут:

http://habrahabr.ru/post/137664/

Потом посмотрите тут(может сэкономить часов 5 головной боли):
Не выполняется INSERT средствами PDO prepared statement

Теперь по теме попробуй запустить
скрипт с ERR_ALL и E_STRICT
0
0 / 0 / 1
Регистрация: 15.11.2012
Сообщений: 27
21.12.2012, 23:29  [ТС]
Как оказалось вызов в php вообще не видит мою процедуру.
Итак упрощу пример:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$server = 'HOME';
// Connect to MSSQL
$link = mssql_connect($server, 'sa', '1234567');
$innp = intval($_GET['innp']);
mssql_select_db('Hotel',$link);
$stmt = mssql_init("[dbo].test",$link);
 
// Bind values
mssql_bind($stmt, '@nomer',    $innp,  SQLINT1);
 
// Execute the statement
mssql_execute($stmt);
 
?>

Сама процедура:
T-SQL
1
2
3
4
5
6
7
8
USE Hotel
GO
 
CREATE PROCEDURE [dbo].test @nomer int
AS
begin
 select 99
end
Ошибка та же:
Bash
1
Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed in T:\home\localhost\www\l.php on line 11
Ребят, помогите разобраться =( уже 3ий день бьюсь.
P.S К базе коннектиться нормально, т.е select и т.п подобные работают через mssql_query

Добавлено через 17 минут



Сделал еще одну серию тестов:
Процедура.
T-SQL
1
2
3
4
5
6
7
8
9
10
11
USE Hotel
GO
 
drop PROCEDURE [dbo].test
go
 
CREATE PROCEDURE [dbo].test
AS
begin
 select 99
end
PHP.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$server = 'HOME';
// Connect to MSSQL
$link = mssql_connect($server, 'sa', '1234567');
$innp = intval($_GET['innp']);
$sel = mssql_select_db('Hotel',$link);
if (!$sel) {
    die('Could not select_db: ' . mysql_error());
}
 
$stmt = mssql_init("[dbo].test",$link);
if (!$stmt) {
    die('Could not init: ' . mysql_error());
}
echo 1111;
$result = mssql_execute($stmt);
if (!$result) {
    die('Could not execute: ' . mysql_error());
}
echo 22222;
 
?>
Лог:
1111
Warning: mssql_execute() [function.mssql-execute]: stored procedure execution failed in T:\home\localhost\www\l.php on line 16
Could not execute:
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.12.2012, 23:29
Помогаю со студенческими работами здесь

Image MSSQL PHP
Столкнулся с такой проблемой. В базе данных MSSQL находится столбец с типом image. Там хранятся картинки. Мне нужно вывести их на странице....

PHP + MSSQL + AJAX
Всем доброго дня! Итак ситуация в следующем, есть БД MSSQL, есть форма на php, в ней 5 полей: &quot;user_login&quot; |...

Php 5.3 + mssql 2000
Тема может не нова, но вот беда. Шарахнулся в инет - вроде как 5.3 не идет со стандартными драйверами для мсскл. Пытаюсь с денвера...

Нет коннекта PHP и MSSQL
Всем привет! Возникла одна проблема. Есть личный кабинет для игры RF ONLINE и есть базы MSSQL. Личный кабинет стоит на хостинге timeweb,...

PHP и MSSQL, теряется связь
Добрый день. У меня возникает проблема: периодически PHP (5.2.17) сообщает о невозможности соединения с сервером (“Warning:...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru