Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / php не видит некоторые записи в базе / 21 сообщений из 21, страница 1 из 1
22.06.2014, 12:31
    #38676517
Attid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
всем привет

поймал барабашку, не знаю что с ним делать

данные
FirebirdCS-2.0.7.13318
PHP Version 5.2.3-1ubuntu6.5 через апач

через веб организованны отчеты, через 5 лет тихой эксплуатации заметили что данные в вебформе, в определенных запросах, не соответствуют реальности.
первым делом подумал что что-то с запросами не то, но оказалось что запрос в эксперте возвращает одно (в одном примере 9 строк) а то же самое в вебе другое (8 строк)

есть и другие запросы которые возвращают данные не за каждый день.

там где теряется одна запись заметил что нет записи с текстом "Бесплатная карта" если заменить на "Бесплатная карта_" или "Бесплатная карто" то строка отображается.
с запросом где "дни выпадают" не удалось точно найти причину.

решил что может глючная сбока пхп обновилась. перенес(бекап-ресторе) БД на другую машину там пхп новее PHP 5.3.2-1ubuntu4.24, и сборка interbase.so другая. та же история.

код обращения примитивнейший
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    $db = ibase_connect($database, $user, $pass, 'WIN1251');
    $result     = ibase_query($db, $SQL);
    print '**********<br>';
    print $result;
    print '**********<br>';
    while ($line = ibase_fetch_row($result)) { 
       var_dump($line);
       print '*<br>';
    }
    print '**********<br>';



может кто сталкивался? куда копнуть?

кроме как связки php->interbase.so вроде грешить некуда. но туда залазить не хотелось бы, темный лес для меня там.
...
Рейтинг: 0 / 0
22.06.2014, 12:34
    #38676518
zirra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
Attid> там где теряется одна запись заметил что нет записи с текстом "Бесплатная карта" если заменить на "Бесплатная карта_" или "Бесплатная карто" то строка отображается.
> $result = ibase_query($db, $SQL);
А запрос-то како выглядит-то?..

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.06.2014, 18:15
    #38676653
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
Какие люди, однако. :) Ты хоть заглядывай чаще раза в год.

Attid> $result = ibase_query($db, $SQL);

А сам текст запроса где? Ну и параметры его
(или в строку конкатенируются заранее)?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.06.2014, 07:59
    #38676840
Attid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
да там страничные запросы, простые запросы работают на ура.
вечером попробовал сократить один (тот что не работал в некоторые дни) и о чудо.
нашел на локальной копии день который не работал в эксперте. там был join запроса с запросом и один запрос мог не вернуть записи.
соответственно все стало на свои места. хотя у меня есть сохраненый в эксель результат запроса из эксперта с реальной базы, где он отработал хотя и не должен был. повторить на реальной пока не удалось в виду пропажи связи с объектом.

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

второй запрос с "Бесплатной картой" еще не разобрал на кусочки. может хоть там барабашку поймаю.
...
Рейтинг: 0 / 0
23.06.2014, 09:45
    #38676892
Attid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
пришлось уже свой бубен достать

саму процедуру сократил до

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
create or alter procedure rp_all_sales (
    vfirstdate timestamp,
    vlastdate timestamp,
    vfid integer)
returns (
    vsrv varchar(30),
    vcount integer,
    vsum numeric(10,2))
as
begin
  for select s.name, sum(bp.srv_count), sum(bp.srv_count * bp.cost)
        from bill_pay bp
        join srv s on s.id = bp.id_srv
        join bills b on b.id = bp.id_bill and b.fid = bp.fid_bill
        join fids(:vfid) f on f.fid = b.fid + 0
       where b.dt_pay between :vfirstdate and :vlastdate
       group by s.name


        into :vsrv, :vcount, :vsum
  do
    suspend;
end



строчка с "Бесплатная карта" не выводится (в вебе, в эксперте есть), создал процедуру rp_all_sales2 с таким же содержанием, с ней все нормально все выводится.

удалил процедуру, проверил что вебморда ругается что такой нет, создал заново, все равно не выводится строчка =(

сервер сегодня уже не дадут перезагрузить. пойду апач под звук бубна перезапущу, может поможет.
...
Рейтинг: 0 / 0
23.06.2014, 10:08
    #38676912
Attid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
читаю сообщения и сам себе не верю что такое происходит.
но видно поломанный бубен этого барабашку не возьмет. решил пока не парится и переименовал услугу поменяв е на e (латиница).
все работает, пользователи счастливы, сервер на "карандашике", как будет скучно еще раз попробую заняться им.
...
Рейтинг: 0 / 0
23.06.2014, 10:58
    #38676951
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
Attid> where b.dt_pay between :vfirstdate and :vlastdate


Ну попробуй переписать с between-а на два неравенства.

> строчка с "Бесплатная карта" не выводится

Что за строчка, какие в ней значения полей фильтра?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.06.2014, 17:43
    #38678856
Attid
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
значения каждый раз разные

авторБeсплатная карта 161 27420,00

реагирует именно на изменение текстового поля. between попробую заменить, но учитывая что также помогает изменение имени процедуры не уверен что это поможет.
...
Рейтинг: 0 / 0
24.06.2014, 17:55
    #38678866
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
Attidзначения каждый раз разные

авторБeсплатная карта 161 27420,00

реагирует именно на изменение текстового поля. between попробую заменить, но учитывая что также помогает изменение имени процедуры не уверен что это поможет.

Судя по номеру этой емариновской карточки, пытается притянуть вещественное к целому. С переменным успехом.
...
Рейтинг: 0 / 0
24.06.2014, 17:57
    #38678869
zirra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
Attid> реагирует именно на изменение текстового поля. between попробую заменить, но учитывая что также помогает изменение имени процедуры не уверен что это поможет.
Дурацкий вопрос: а без where оно нормально отрабатывает?..

--
Vladimir A.Bakhvaloff
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
24.06.2014, 17:59
    #38678874
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
Attid> помогает изменение имени процедуры не уверен что это поможет.

Ты про какой-то полтергейст рассказываешь... :)

Если у тебя есть воспроизводимый пример
(хоть один), когда "бесплатная карта" в IBE
выводится, а в твоём ПО/РНР не выводится -
давай конкретно этот случай и разбирать, а
не процедуры переименовывать и буквы в
текстовых полях транслитом менять.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
27.01.2015, 11:01
    #38864007
Ralno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
Барабашка вилать ко мне переехал хD

сабж почти такой же
только firebird 1,5

имеется таблица
Код: sql
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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
PartnerID
Integer (TID)
not null
Первичный ключ 

Name
Varchar(50) (TName)
not null
'Новый контрагент'
Наименование 

DefaultCardID
Integer (TID)
not null
Скрытый представитель для регистрации зачисления средств на счет контрагента 

Rem
Varchar(500) (TRemark)
not null
''
Примечания. Текстовое поле для пользовательских комментариев. 

WithNDS
Integer (TBoolean)
not null
0
Флаг способа вычисления НДС.

TransactionID
Integer (TID)
not null
0
Номер транзакции последнего изменения записи. Используется для репликации на локальный сервер 

Inn
Varchar(12) (TINN)
not null
''
ИНН 

PartnersGrpID
Integer (TID)
not null
0
Ссылка на группу контрагентов 

DiscountSchemaID
Integer (TID)
not null
0
Ссылка на дисконтную схему 

Enabled
Integer (TBoolean)
not null
1
Флаг вкл/выкл использования контрагента и всех его представителей 



и не сложный скрипт php
Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
<?php
echo "<html>
<head>
<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />
<title></title>

</head>
<body>
    <table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" >
           <thead bgcolor=\"gray\" align=\"center\" >

		<tr>
			<td>TopazID</td>
			<td>Организация</td>
			<td>ИНН</td>
			<td>Группа</td>
		</tr>
            </thead>
            <tbody>";

include_once 'libs/php/DataBase.php';
include_once 'libs/php/config.php';
include_once 'libs/php/TopazData.php';

$SQL = 'SELECT *
FROM "dcPartners" a
order by a."PartnerID"';
$handel = ibase_connect($tDatabase, $tUser, $tPassword, 'UTF-8');
$res = IB_Query($SQL, $handel);
while ($row = ibase_fetch_assoc($res)){
    echo '      <tr>
                    <td>'.$row['PartnerID'].'</td>
                    <td>'.$row['Name'].'</td>
                    <td>'.$row['Inn'].'</td>
                    <td>'.$row['PartnersGrpID'].'</td>
		</tr>';
}
echo "      </tbody> </br> $SQL
</body>
</html>";
?>


проблема: через php выводит первые 14 строк
хотя их там более 2х-сот
через flamerobin выводится все
...
Рейтинг: 0 / 0
27.01.2015, 11:08
    #38864013
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
Ralno,

смотри что там внутри IB_Query. А то может в ней к запрос парсится и в него добавляется first(20)
...
Рейтинг: 0 / 0
27.01.2015, 11:11
    #38864016
Ralno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
да не это так чтоб каждый раз коннект не писать

Код: 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.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
 function IB_Query($SQL){ 
        include 'config.php';
        $thandel= ibase_connect($tDatabase,$tUser, $tPassword, "UTF8");
        if (!$thandel){echo "Dzopa".ibase_errmsg();;}
        $opt = "";
        $SQL = trim($SQL);
	//$SQL = iconv('UTF-8', 'windows-1251', $SQL);
        //определяем тип запроса
        if (strpos(strtolower(substr($SQL, 0, 6)), "select") === 0) {$opt = "read";}
        if (strpos(strtolower(substr($SQL, 0, 6)), "insert") === 0) {$opt = "write";}
        if (strpos(strtolower(substr($SQL, 0, 6)), "update") === 0) {$opt = "write";}
        if (strpos(strtolower(substr($SQL, 0, 6)), "delete") === 0) {$opt = "write";}
        if (strpos(strtolower(substr($SQL, 0, 7)), "execute") === 0) {$opt = "write";}
        if (strpos(strtolower(substr($SQL, 0, 13)), "set generator") === 0) {$opt = "write";}
        if ($opt == "") {
            $result = "Error: Непонятный тип запроса: [>$SQL<]";
        }
        if ($opt == "write") {
            if (isset($tranwrite)) echo "Error: write transaction already open
";
            $tranwrite = ibase_trans(IBASE_CONCURRENCY || IBASE_NOWAIT, $Hl);
            if ($tranwrite === FALSE) $result = "Error: write transaction not started
";
            $result = ibase_query($thandel, $SQL);
            if (!$result) {
                $result = "$SQL IB/FB error: ".ibase_errmsg();
            }
            if (!ibase_commit($tranwrite)) $result = "Error: write transaction not committed
";
            $tranwrite = null;
	} elseif ($opt == "read") {       
            $result = ibase_query($thandel, $SQL);
            if (!$result) {
                $result = "$SQL IB/FB error: ".ibase_errmsg();
                echo $result;
            }
	}
        IB_close($H1);
        return $result;
    }
...
Рейтинг: 0 / 0
27.01.2015, 11:15
    #38864020
Ralno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
я вот думаю может это с транзакциями связанно? хотя обернув и селект в транзакцию вообще ничего не выходит
...
Рейтинг: 0 / 0
27.01.2015, 11:16
    #38864021
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
Ralno
Код: php
1.
$handel = ibase_connect($tDatabase, $tUser, $tPassword, 'UTF-8');



В FB1.5 кодировка UTF-8 вроде бы не поддерживалась.
...
Рейтинг: 0 / 0
27.01.2015, 11:22
    #38864030
Ralno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
Симонов Денис,

в win-1251 тоже самое
да и другие запросы выводит успешно ведь в UTF-8
...
Рейтинг: 0 / 0
27.01.2015, 11:24
    #38864032
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
Ralno,
Ralno
Код: php
1.
2.
3.
4.
5.
 function IB_Query($SQL){ 
...
        IB_close($H1);
        return $result;
    }


а не закрываешь ли ты запрос до того, как сфетчишь все записи ?
...
Рейтинг: 0 / 0
27.01.2015, 11:26
    #38864034
Ralno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
RalnoСимонов Денис,

в win-1251 тоже самое
да и другие запросы выводит успешно ведь в UTF-8

блин не там кодировку исправил, да дело оказалось в ней спасибо большое
...
Рейтинг: 0 / 0
27.01.2015, 11:27
    #38864037
Ralno
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
hvlad,

не для этого вот
Код: php
1.
$result = ibase_query($thandel, $SQL);
...
Рейтинг: 0 / 0
27.01.2015, 11:33
    #38864049
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
php не видит некоторые записи в базе
Ralnoне для этого вот
Код: php
1.
$result = ibase_query($thandel, $SQL);

Согласен (хоть до сих пор не вижу, что такое $H1)
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / php не видит некоторые записи в базе / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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