php - tag - Cómo manejar las excepciones de la DOP
tooltip title (2)
DOP no lanzará excepciones a menos que usted lo indique. Has corrido
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
en el objeto PDO?
Esta pregunta ya tiene una respuesta aquí:
- Mi declaración de DOP no funciona 1 respuesta
Estoy tratando de trabajar con la clase PDO
en php, pero tengo algunos problemas para encontrar la manera correcta de manejar los errores, escribí este código:
<?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
?>
esta parte del código no informa errores, pero simplemente no funciona, el $status
var $status
en la parte inferior devuelve un valor nulo.
¿Puede alguien ayudarme a encontrar donde me equivoco?
Puedes agregar el atributo una vez mientras te conectas a 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;
}
}
Gracias