Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2012, 19:28   #1
SevenXP
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 44
По умолчанию Хранимые процедуры MySQL и вызов их в PHP

Пишу сайт и захотел некоторые SQL запрос закинуть в процедуры MySQL и вызвать их в PHP но что то пошло на перекос был код
Код:
$result= mysql_query("SELECT * FROM menu WHERE id=$id);",$db);
$myrow=mysql_fetch_array($result);

Был заменен на:

$result= mysql_query("call informate($id);",$db);
$myrow=mysql_fetch_array($result);
Процедура все нормально работает в Командной строке.
Основной текст выводиться нормально но везде другой SQL запросы которые небыли изменены выдают ошибки


Код:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\site.ru\www\PHPBLOCK\menu.php on line 5


Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in Z:\home\site.ru\www\PHPBLOCK\menu.php on line 11

Как правильно вызывать в PHP хранимые процедуры. Прошу если можно написать PHP код без в сяких IF проверок на ошибок просто команды и как переходить тогда по записям?

Последний раз редактировалось SevenXP; 18.08.2012 в 19:48.
SevenXP вне форума Ответить с цитированием
Старый 18.08.2012, 19:38   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

При таком знании русского языка у вас и в программировании будут ошибки.
motorway вне форума Ответить с цитированием
Старый 18.08.2012, 19:40   #3
SevenXP
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 44
По умолчанию

Если бы я писал на родном языке ты бы вообще не понял бы не чего! Я тут тему создал не по обсуждать мои знания русского языка. Я программирую не на русском!
SevenXP вне форума Ответить с цитированием
Старый 18.08.2012, 19:46   #4
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Пробуй либо mysqli, либо функцию вместо ХП
motorway вне форума Ответить с цитированием
Старый 18.08.2012, 19:46   #5
SevenXP
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 44
По умолчанию

Вот на счет msqli я чуть не понял. Там где нашел я чуть не понял пример

Код:
$db = mysql_connect("127.0.0.1:4000", "root", "12345");
mysql_select_db("site", $db);

Как правильно поменять эту часть кода 
$db = mysqli_connect("127.0.0.1:4000", "root", "12345");
mysql_select_db("site", $db);
Так что ли?

+ 

сам запрос чуть другого вида я к сожелению удалил тот код но.

$result= mysql_query("call informate($id);",$db); <--- тут другое писал немного добавил слово между mysql_query ( вроде array)
$myrow=mysql_fetch_array($result); <--- и тут по ходу вывод инфы будет по другом?
Где толком можно почетать про mysqli и про процедуры вызываймые в php

Последний раз редактировалось SevenXP; 18.08.2012 в 19:54.
SevenXP вне форума Ответить с цитированием
Старый 18.08.2012, 19:50   #6
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

http://www.php.net/manual/en/mysqli....procedures.php
motorway вне форума Ответить с цитированием
Старый 18.08.2012, 23:07   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

вообще именно в вашем примере - абсолютно не вижу никакого + в ХП...только усложнение кода по читаемости... да еще и ошибки
... покажите саму хранимку... может оформили что не так
ADSoft вне форума Ответить с цитированием
Старый 19.08.2012, 15:50   #8
SevenXP
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 44
По умолчанию

Начало кода
Код:

<?php 
require("PHPBLOCK\connect.php"); <---
{
$db = mysql_connect("127.0.0.1", "admin", "admin");
mysql_select_db("site", $db);
}
$id;
if (isset($_GET['id'])) {$id=$_GET['id'];} else { $id=1;}
$result= mysql_query("SELECT * FROM menu, text where menu.id=text.id and menu.id=$id;",$db);
$myrow=mysql_fetch_array($result);

?>
Я хотел все выборки переделать в вызов процедуры. Дальше идет места добавления комментария и я бы там хотел тоже сделать процедуру. Мне так кажется будет безопасней.
Вот и хотел начать с малого. Переделать начало выбора информации в зависимости от выбранного пункта меню.
Я думал что всё будет типа mysql_query(“call имя();”,БД); но ошибся по ходу.

Еще я не могу в Денвере в phpMyAdmin создать процедуру. И прикольно что подключился через WorkBench 5.2 к базе МуSQL на Денвере и там тоже не получилось сделать тот же код процедуры(. Тогда я отдельно устанавливал MySQL и в командной строке прописывал тот же код процедуры и все окей в командной строке все работает. Естественно на 2 MySQL я ставил порт 4000 базу восстанавливал через скрипт во 2-й базе. И менял подключение добавив 127.0.0.1:4000 До изменения на вызов процедуры все работало нормаль.
По ходу я вообще не имею представления как работать в PHP c хранимыми процедурами. Интересно что будет если понадобиться делать Транзакцию)))

Если что сильно не ругайте. MySQL учил через командную строку) с блокнотом Notepad++. А PHP вообще даже в колледже не преподовали) Толь C++ DELPHI JAVA(eclipse) Так что к не новечку только в этих облостях)

Код:
DELIMITER ?
CREATE PROCEDURE view_inf(IN id INT)
BEGIN
SELECT * FROM menu, text where menu.id=text.id and menu.id=id;
END;
?
DELIMITER ;
вид процедуры

Последний раз редактировалось SevenXP; 19.08.2012 в 16:48.
SevenXP вне форума Ответить с цитированием
Старый 19.08.2012, 17:33   #9
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,160
По умолчанию

Код:
SELECT * FROM menu AS m LEFT JOIN text AS t ON m.id=t.id WHERE m.id=id;
... так наверное правильнее будет ?
ADSoft вне форума Ответить с цитированием
Старый 19.08.2012, 20:06   #10
SevenXP
Пользователь
 
Регистрация: 17.09.2010
Сообщений: 44
По умолчанию

Не все пашет как мне надо. Все нормально проблема в другом. Как правильно вызывать хранимые процедуры в PHP. там выше скинули статьи. Ну как я заметил немного переделывать придаться и решил этот сайт дописать так. Без вызова процедур.

Просто я боюсь добавлений коммента что бы не кто не писал типа (" или еще что ни будь по хуже. Проверяю как оно добавляться будет но мне кажется? что нужно делать в PHP проверку символов и добавлять вроде слеши ну или что там потом гляну.

Тойст процедура INSERT Когда буду вставлять текст и там допустип будет("; текст) не приведет ли к сбою когда буду считывать коменты.

И еще, просто видео повреждено, а искать в лом. Есть команда что бы вырезало теги с переменной. Как пишется я ее забыл? Там еще есть что можно добавить за исключением тегов.

Последний раз редактировалось SevenXP; 19.08.2012 в 20:09.
SevenXP вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хранимые процедуры Ericnex БД в Delphi 1 20.05.2012 17:41
Хранимые процедуры whatever SQL, базы данных 2 19.03.2012 21:06
Триггеры и хранимые процедуры mysql hit'n'run Фриланс 0 15.05.2011 14:11
Хранимые процедуры... Только_Учусь БД в Delphi 2 17.07.2008 06:06