У меня есть PHP 5.2.3, apache2.x, mysql 5.x на машине Linux. До сих пор все было хорошо. Этим утром внезапно один из файлов php начал бросать "Неустранимая ошибка: вызов функции-члена функции() на не-объекте в". Я использую PDO (подготовка, выполнение, закрытие курсора и т.д.). Вы когда-нибудь сталкивались с этой проблемой? кто-то знает, что это исправить.
Большое спасибо, R
Как говорит Алан, проблема в том, что prepare
возвращает false
, а не PDOStatement
. Лучший способ отладить это - включить предупреждения. Для этого введите этот код сразу после инициализации PDO:
$db = new PDO(); // insert the following after this line
$db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
Это будет означать, что предупреждение PHP будет вызвано PDO, если инструкция составления не выполняется. Это должно содержать информацию, которая поможет вам отладить проблему.
Ваш вызов prepare
, вероятно, не работает. Вероятно, это связано с неверным выражением SQL.
Нам нужно точно знать, какую библиотеку вы используете, чтобы узнать больше, но prepare
, вероятно, возвращает false
вместо объекта. Затем, когда вы пытаетесь вызвать execute
в возвращаемом значении, вы пытаетесь вызвать его на false
вместо объекта, вызывая сообщение об ошибке.
Если вы echo
или var_dump
значение, которое вы вызываете execute
, вы сможете увидеть более подробную информацию.
prepare()
когда соединение с базой данных недопустимо. Я не видел это наexecute()
до сих пор.