Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird & php / 25 сообщений из 26, страница 1 из 2
04.05.2016, 07:13
    #39228787
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Добрый день
Может кто-нибудь поделится примерами работы php и firebird.
...
Рейтинг: 0 / 0
04.05.2016, 07:22
    #39228788
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Там основная "проблема" - подключить/настроить
модули, чтобы к FB/IB вообще был коннект.
Если с этим проблем нет - то голый PHP и запросы.
Или у тебя что-то конкретное не получается ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.05.2016, 08:15
    #39228797
aleksandr-pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Gallemar,
Все просто только в PHP.ini нужно добавить
extension=php_interbase.dll
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
$conn=ibase_connect(BASE1,LOGIN,PASS,'WIN1251',null,3);

$SQL="Select * from TABLE";
$result = ibase_query($conn,$SQL); 
while ($row = ibase_fetch_row($result)) 
{
 echo $row[0]
}
ibase_free_result($result);
ibase_close($conn)
...
Рейтинг: 0 / 0
04.05.2016, 08:21
    #39228798
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Гаджимурадов РустамТам основная "проблема" - подключить/настроить
модули, чтобы к FB/IB вообще был коннект.

С этим проблем нет.
Гаджимурадов РустамЕсли с этим проблем нет - то голый PHP и запросы.
Или у тебя что-то конкретное не получается ?


Банально всё.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?php 
$host="localhost:test"; 
$username="SYSDBA"; 
$password="masterkey"; 
$dbh = ibase_connect($host, $username, $password); 
$stmt = "SELECT id FROM users"; 
$result = ibase_query($dbh, $stmt); 
if ($result==0) 
   echo("<B>Ошибка!</B>"); 
?> 



Страница пустая.
...
Рейтинг: 0 / 0
04.05.2016, 08:39
    #39228803
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Gallemar> $result = ibase_query($dbh, $stmt);
> if ($result==0)
> Страница пустая.

Интересно, что ты хочешь от неё получить?
Фетчить надо, во-первых. Столбцов больше
одного может быть - во-вторых.

Код: php
1.
2.
3.
4.
while  ($result = ibase_fetch_row ($h, $atmt))
{
  echo $result[0] . '  ' .  $result[1] ...;
}



В общем, читай буквари, боюсь, с кандачка
ты не осилишь. А зачем понадобилось-то,
работу поменял что ли?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
04.05.2016, 09:33
    #39228835
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Гаджимурадов РустамВ общем, читай буквари, боюсь, с кандачка
ты не осилишь. А зачем понадобилось-то,
работу поменял что ли?


Почитаю, php и mysql писал,но было это давно, точно букварь нужен.
Работу не поменял, к мониторингу хочу веб-морду прикрутить.
...
Рейтинг: 0 / 0
04.05.2016, 09:35
    #39228839
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Gallemar,

Ну дык по соседству профильный форум живет...
...
Рейтинг: 0 / 0
04.05.2016, 09:41
    #39228846
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
DarkMaster, там никто delphi firebird не знает :)
...
Рейтинг: 0 / 0
04.05.2016, 09:57
    #39228854
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Gallemar,

Если нужен минимум, то можешь отталкиваться примерно от такого (управления транзакциями тут нет):

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
function ibconnect($host,$role,$username, $password)
{
  $dbh = @ibase_connect($host,$username,$password,'WIN1251',0,3,$role);
   return $dbh;
}


$d=ibconnect($mainhost,'','MY_USER','MY_PASS');    // соединились
if ($d==0)                                                         // все ок? 
     {
       print("Ошибка соединения с базой данных!");         
       exit;
     }

$sqltext="SELECT ID,ANAME FROM MY_TABLE WHERE ORDER BY ANAME";   // текст запроса
$sql=ibase_query($d,$sqltext);                                                            
while ($row=ibase_fetch_object($sql))        // преимущество - можно к полям обращаться не по индексу, а по имени.
                                                           // минус - лучше соблюдать регистр в имени поля (были там какие-то мутки)
   {
       print("$row->ID $row->ANAME<br>");
    }

ibase_free_result($sql);   // освободили ресурс
ibase_close($d);            // отсоединились 



P.S. И лучше не использовать запись в виде
Код: php
1.
@ibase_xxxx ()

- подавишь вывод ошибок, фиг поймешь, что пошло не так с наскоку...
...
Рейтинг: 0 / 0
04.05.2016, 10:00
    #39228857
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
GallemarБанально всё.
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?php 
$host="localhost:test"; 
$username="SYSDBA"; 
$password="masterkey"; 
$dbh = ibase_connect($host, $username, $password); 
$stmt = "SELECT id FROM users"; 
$result = ibase_query($dbh, $stmt); 
if ($result==0) 
   echo("<B>Ошибка!</B>"); 
?> 



Страница пустая.

дык если ошибки нет, то почему она должна быть не пустой. Кстати ошибки проверяются не так. См. ibase_errmsg() и ibase_errcode()

попробуй как-то так

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<?php 
$host="localhost:test"; 
$username="SYSDBA"; 
$password="masterkey"; 
$dbh = ibase_connect($host, $username, $password); 
$stmt = "SELECT id FROM users"; 
$rs = ibase_query($dbh, $stmt); 
if ($rs) {
   while ($obj = ibase_fetch_object($this->rs, IBASE_TEXT) {
       // тут обрабатываем или складываем в массив
       var_dump($obj);
   }
}
else {
   $err_msg = ibase_errmsg();
   if ($err_msg)
      echo "<B>Ошибка:</B> $err_msg"; // я бы в этом месте Exception кинул
}
?> 
...
Рейтинг: 0 / 0
04.05.2016, 10:01
    #39228858
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
кстати да. Ресурсы надо бы все закрывать
...
Рейтинг: 0 / 0
04.05.2016, 10:04
    #39228862
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Симонов Денис,

this там назачем?
...
Рейтинг: 0 / 0
04.05.2016, 10:06
    #39228867
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
да это у меня в одном месте кусок с этой функцией был. Скопипастил :(. Там просто класс надстройки был.
В этом примере не нужен конечно
...
Рейтинг: 0 / 0
04.05.2016, 10:21
    #39228878
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Gallemar,


Кстати, для автообновляемой статистики можно вот такой финтик прикрутить:

Код: php
1.
  header("Refresh: _ЗАДЕРЖКА В СЕКУНДАХ_; URL=_СТРАНИЦА_ДЛЯ_СТАТИСТИКИ_");  // это в самом начале страницы, до любого вывода
...
Рейтинг: 0 / 0
04.05.2016, 15:17
    #39229183
MikeDD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
А чем быстро и просто можно нарисовать таблички с элементарными операциями типа вставка записи и изменения значения поля? Хочется кусок от БД в инет вытащить. Чтобы с ФБ работало понятное дело. Нашел пока http://phpgrid.com/ но оно в бесплатной версии редактировать не умеет.
...
Рейтинг: 0 / 0
04.05.2016, 15:23
    #39229190
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
MikeDDА чем быстро и просто можно нарисовать таблички с элементарными операциями типа вставка записи и изменения значения поля? Хочется кусок от БД в инет вытащить. Чтобы с ФБ работало понятное дело. Нашел пока http://phpgrid.com/ но оно в бесплатной версии редактировать не умеет.

- ходи в профильный форум
- я бы с разными гридами не заморачивался (монстроидальные они) - значительно проще нарисовать форму в скрытом диве, показать по кнопке (JS) и сделать POST обработчику, который изменения в БД пропишет и сделает редирект обратно на страницу вызова.
...
Рейтинг: 0 / 0
05.05.2016, 20:33
    #39230340
Dorin Marcoci
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Gallemar, посмотри еще в сторону PDO: http://php.net/manual/en/ref.pdo-firebird.php
Более красивый код иногда получается. Я работал с обеими библиотеками.
...
Рейтинг: 0 / 0
06.05.2016, 04:18
    #39230459
Gallemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Dorin Marcoci, спасибо,но нет. Он же кривой как сабля.
...
Рейтинг: 0 / 0
06.05.2016, 06:25
    #39230468
Любезный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
авторОн же кривой как сабля.
И в чём же?
...
Рейтинг: 0 / 0
06.05.2016, 09:42
    #39230541
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
ЛюбезныйавторОн же кривой как сабля.
И в чём же?

Некоторые баги в трекере висят с 2010 года. Ну и набор функций ibase_xxx() более старый и оттестированный.

P.S. Я ни разу не агитирую за старый метод - каждый волен выбирать сам.
...
Рейтинг: 0 / 0
06.05.2016, 10:05
    #39230569
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
DarkMaster,

на самом деле и тот и другой крив, но приходится работать с тем что есть. В PDO возможностей поменьше, драйвер для FB до сих пор помечен как экспериментальный.

И тот и другой при попытке засунуть NULL в параметр который определился как NOT NULL падают заодно унося с собой Apache, что вообще не приемлемо. Тест кейс примерно следующий:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<?php
    $dbh = ibase_connect('localhost:mydb', 'sysdba', 'masterkey', 'UTF-8');
    $sth = null;
    $rc = null;
	
    try {
	  $sth = ibase_prepare($dbh, 'SELECT CODE_COLOR, NAME FROM COLOR WHERE CODE_COLOR = ?');
	  $code_color = null;
          $rs =  ibase_execute($sth, $code_color);  
  	  if (is_resource($rs)) {
              $object = ibase_fetch_object($rs, IBASE_TEXT);
              var_dump($object);
	  }
	  else 
	      echo 'It is not cursor';
    }
    finally {
      if (is_resource($rs))
        ibase_free_result($rs);
      if (is_resource($sth))
        ibase_free_query($sth);
      if (is_resource($dbh))
        ibase_close($dbh);	
    }
?>		



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE COLOR (
    CODE_COLOR    INTEGER NOT NULL,
    NAME          VARCHAR(30) NOT NULL,
    CONSTRAINT PK_COLOR PRIMARY KEY (CODE_COLOR)
);

INSERT INTO COLOR(CODE_COLOR, NAME) VALUES(1, 'красный');
INSERT INTO COLOR(CODE_COLOR, NAME) VALUES(2, 'синий');



Пытался посмотреть исходники и разобраться. Есть предположение что кто-то не выделяется память под nullInd когда определяет что параметр NOT NULL, но не уверен в этом. Попробуйте воспроизведётся ли у вас. У меня давно руки чешутся в трекер им написать.
...
Рейтинг: 0 / 0
06.05.2016, 10:09
    #39230572
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Симонов Денис,

ОК, посмотрю, но только в конце месяца.. Как раз придется заниматься большим проектом на PHP.
...
Рейтинг: 0 / 0
07.05.2016, 09:00
    #39231249
MikeDD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Симонов Денис, на Apache/2.4.18 (Win64) PHP/7.0.3 мне выдало:

Warning: ibase_execute(): Dynamic SQL Error SQL error code = -804 Incorrect values within SQLDA structure in D:\web\www\test\6.php on line 9
It is not cursor

и не упало.
...
Рейтинг: 0 / 0
07.05.2016, 09:16
    #39231250
MikeDD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
Вернее он упал но быстро поднялся:
[mpm_winnt:notice] [pid 1064:tid 384] AH00428: Parent: child process 1480 exited with status 255 -- Restarting.
[mpm_winnt:notice] [pid 1064:tid 384] AH00455: Apache/2.4.18 (Win64) PHP/7.0.3 configured -- resuming normal operations
[mpm_winnt:notice] [pid 1064:tid 384] AH00456: Apache Lounge VC14 Server built: Dec 9 2015 11:13:29
[core:notice] [pid 1064:tid 384] AH00094: Command line: 'D:\\web\\apache\\bin\\httpd.exe -d D:/web/apache'
[mpm_winnt:notice] [pid 1064:tid 384] AH00418: Parent: Created child process 3940
[mpm_winnt:notice] [pid 3940:tid 288] AH00354: Child: Starting 64 worker threads.
[:error] [pid 3940:tid 800] [client 192.168.56.100:60177] PHP Warning: ibase_execute(): Dynamic SQL Error SQL error code = -804 Incorrect values within SQLDA structure in D:\\web\\www\\test\\6.php on line 9
...
Рейтинг: 0 / 0
08.05.2016, 01:44
    #39231412
shs_spb
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Firebird & php
MikeDDБД в инет вытащить
PHP микро-framework Slim http://www.slimframework.com/docs/tutorial/first-app.html
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird & php / 25 сообщений из 26, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]