powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / php не видит некоторые записи в базе
21 сообщений из 21, страница 1 из 1
php не видит некоторые записи в базе
    #38676517
Фотография Attid
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем привет

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

данные
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
php не видит некоторые записи в базе
    #38676518
Фотография zirra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Attid> там где теряется одна запись заметил что нет записи с текстом "Бесплатная карта" если заменить на "Бесплатная карта_" или "Бесплатная карто" то строка отображается.
> $result = ibase_query($db, $SQL);
А запрос-то како выглядит-то?..

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
php не видит некоторые записи в базе
    #38864007
Ralno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Барабашка вилать ко мне переехал х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
php не видит некоторые записи в базе
    #38864013
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ralno,

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

Код: 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
php не видит некоторые записи в базе
    #38864020
Ralno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я вот думаю может это с транзакциями связанно? хотя обернув и селект в транзакцию вообще ничего не выходит
...
Рейтинг: 0 / 0
php не видит некоторые записи в базе
    #38864021
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ralno
Код: php
1.
$handel = ibase_connect($tDatabase, $tUser, $tPassword, 'UTF-8');



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

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


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

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

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

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

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


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