«phpClub» — архив тем ("тредов"), посвящённых изучению PHP и веб-технологий.
Аноним 2018/11/02 12:02:10  №1288795 1
С пдо вобще не работал, а манул дочитал лишь до середины (Connections and Connection management). Решил, что потом дочитаю и начал делать. И вот присваиваю пременной значение ответа sql, а код выполняется не дожидаясь этого ответа, и на тесте на нулл выдает true. Выставил задержку в качетсве костыля, но она тоже не помогает, а ждать на каждом обращении более 0.15 сек не по барски. Что делать?
Ответы: >>1288805 >>1288827
Аноним 2018/11/02 12:25:07  №1288805 2
>>1288795

Минимальный пример кода в студию. Напиши, что он выводит, и что, по-твоему, должен вывести. Тогда я смогу глянуть и за 5-10 секунд понять, в чем дело. А по твоему описанию ничего не понять.
Ответы: >>1288813
Аноним 2018/11/02 13:04:36  №1288813 3
Ответы: >>1288820 >>1288822 >>1288824
Аноним 2018/11/02 13:33:27  №1288820 4
>>1288813

sleep надо убрать.

Также, зачем ты выставил ATTR_PERSISTENT? Попробуй без него. Или тебе надо именно с ним?

Также, включи выброс исключения при ошибке: http://php.net/manual/ru/pdo.setattribute.php ( PDO::ERRMODE_EXCEPTION: )

Также, включи отображение ошибок в php.ini (display_errors = 1), если оно не включено. Но не делай так на продакшене!

Я подозреваю, проблема в том, что ты почему-то не включил вывод ошибок (хотя во всех моих уроках написано, что надо его включать), происходит какая-то ошибка, но так как ты не включил их вывод, ты о ней не знаешь и придумываешь неправильные объяснения происходящему, ставишь sleep, хотя он ни на что не влияет итд.
Ответы: >>1288870
Аноним 2018/11/02 14:50:57  №1288870 5
>>1288820
>ATTR_PERSISTENT
Ну мне нужно минимизировать время, а запросов к базе много. Если есть альтернативы, то я буду не против. А вообще скорее всего перепишу все на prepare, без кривого класса.
>display_errors
Вроде все включено
>PDO::ERRMODE_EXCEPTION:
Он тоже вроде включен по умолчанию, но ошибки через try catch нет
>>1288824
Возвращает пустой массив, но если передвинуть на строчку вниз, то вернет все что запрашивал.
>>1288822
Ответы: >>1288882 >>1289076
Аноним 2018/11/02 15:12:32  №1288882 6
>>1288870
Хотя возможно это действительно не в pdo вина. Просто это выглядело достаточно странно, когда у меня ПК был под нагрузкой, то возвращался пустой массив, а если внутри if я убирал die, то программа после выполнялась вполне нормально.
Аноним 2018/11/02 20:31:20  №1289076 7
>>1288870

>>PDO::ERRMODE_EXCEPTION:
> Он тоже вроде включен по умолчанию, но ошибки через try catch нет

Нет, неверно. Где это написано? Я написал тебе - по умолчанию ошибки работы с базой данных никак не репортятся. Потому надо ставить эту опцию.

Прочитай внимательно мануал, что стоит по умолчанию: http://php.net/manual/ru/pdo.error-handling.php

Также, try/catch писать не надо. Почитай урок про исключения: https://github.com/codedokode/pasta/blob/master/php/exceptions.md