Я пытаюсь работать с PDO
классом на php, но у меня есть некоторые проблемы, чтобы найти правильный способ обработки ошибок, я написал этот код:
<?php // $connection alreay created on a class which works with similar UPDATE statements // I've simply added here trim() and PDO::PARAM... data type $id = 33; $name = "Mario Bros."; $url = "http://nintendo.com"; $country = "jp"; try { $sql = "UPDATE table_users SET name = :name, url = :url, country = :country WHERE user_id = :user_id"; $statement = $connection->prepare ($sql); $statement->bindParam (':user_id', trim($id), PDO::PARAM_INT); $statement->bindParam (':name', trim($name), PDO::PARAM_STR); $statement->bindParam (':url', trim($url), PDO::PARAM_STR); $statement->bindParam (':country', trim($country), PDO::PARAM_STR, 2); $status = $statement->execute (); } catch (PDOException $e) { print $e->getMessage (); } print $status; // it returns a null value, and no errors are reported ?>
эта часть кода не сообщает об ошибках, но она просто не работает, $status
var $status
внизу, возвращает нулевое значение.
может кто-нибудь помочь мне найти, где я ошибаюсь?
PDO не будет генерировать исключения, если вы не сообщите об этом. Вы запустили:
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
на объекте PDO?
Вы можете добавить атрибут один раз, когда вы подключаете mysql.
function connect($dsn, $user, $password){ try { $dbh = new PDO($dsn, $user, $password, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING)); } catch (PDOException $e) { echo 'Connection failed: ' . $e->getMessage(); exit; } }
благодаря