Не могу понять поведение кода PHP

D
На сайте с 28.06.2008
Offline
1101
164

Не понимаю как банальный Селект в базу может вносить изменения в переменную?  (в коде сделал пометки)

     ...........

       try {
                if (strlen($review) > 100) {

//первая проверка - нет ли уже в базе отзывов с таким именем в это время
// если поднять сюда file_put_contents('/test.txt то проблем нет, все отзывы на месте

                    $proverka = $conn->query("SELECT id FROM ....'");
                    $result_proverka = $proverka->fetchAll(PDO::FETCH_ASSOC);

                    $str100 = substr($review,0,100);

// если поднять сюда file_put_contents('/test.txt то проблем нет, все отзывы на месте

//вторая проверка - проверяю первые 100 символов отзыва (так как отзывы на сайт приходят из разных мест и могут быть одинаковые отзывы, а авторы разные)
 
                    $proverka2 = $conn->query("SELECT * FROM `xy_comments` WHERE `object_group` = 'com_firm' AND `object_id` = '{$result[0]['id']}' AND `description` LIKE '{$str100}%' ORDER BY `xy_comments`.`id` DESC limit 100");
                    $result_proverka2 = $proverka2->fetchAll(PDO::FETCH_ASSOC);

//и вот тут магия - после второго селекта пропадает часть отзывов - WTF???  Стоит его закомментировать и все отзывы запишутся в test.txt
                    if(!empty($_SERVER['REMOTE_ADDR'])){
                        file_put_contents('/test.txt', $author.'---'.$review. PHP_EOL, FILE_APPEND | LOCK_EX);
                    }

..........


D
На сайте с 28.06.2008
Offline
1101
#1

Причина найдена - из-за спец. символов в отзывах  второй запрос в базу заканчивался ошибкой, а так как у меня Трай-Кетч, то я не видел ошибки. 

mb_substr вместо substr решило проблему

M
На сайте с 04.12.2013
Offline
223
#2
Dram #:
а так как у меня Трай-Кетч, то я не видел ошибки
Трай/кятч нужен, чтобы ловить ошибки, а не терять 😉
Домены и скрипт для коротких ссылок: https://u75.ru/domains-for-shortcuts
M
На сайте с 04.12.2013
Offline
223
#3
Dram :
file_put_contents('/test.txt'
Это сильно! Под виндами что ли работаешь?
M
На сайте с 04.12.2013
Offline
223
#4
Dram :
$str100 = substr($review,0,100);
Однобайтовая кодировка? И не насыщенный форматированием текст?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий