如何解决未捕获的PDOException?

时间:2017-06-24 22:58:08

标签: php mysql sql

我使用免费托管我的MySQL数据库,但是当我尝试通过我的PHP代码连接到它时,它会抛出一个未被捕获的PDOException错误,我的访问被拒绝。我似乎无法找到为什么连接被拒绝,因为我的凭据是正确的。

我使用Ionic 2框架,如果有帮助的话。

错误:

<b>Fatal error</b>:  Uncaught PDOException: SQLSTATE[HY000] [1045] Access denied for user 'sql10181809'@'153.92.0.10' (using password: YES) in /storage/ssd5/403/2053403/public_html/escanerproducto.php:33
Stack trace:
#0 /storage/ssd5/403/2053403/public_html/escanerproducto.php(33): PDO-&gt;__construct('mysql:host=sql1...', 'sql10181809', '\xE2\x81\xA0\xE2\x81\xA0\xE2\x81\xA0dfFf6l...')
#1 {main}
  thrown in <b>/storage/ssd5/403/2053403/public_html/escanerproducto.php</b> on line <b>33</b><br />

PHP连接代码:

<?php



@$db = new PDO("mysql:host=sql10.freesqldatabase.com;dbname=sql10181809", "sql10181809", "PASS");

if($db){
    $sql = "select * from producto WHERE 
                codigo_barra='".$codigodebarra."'";


    $query = $db->prepare($sql);
    $query ->execute();
    $query->setFetchMode(PDO::FETCH_NUM);
    if($fila = $query->fetch()){ 
        $nombre = $fila[2];
        $resultados_finales = array("nombre"=>$nombre);
        echo json_encode($resultados_finales);

    }else{
        $resultados_finales = array("mensage"=>"error");
        echo json_encode($resultados_finales);
    }
} else {
       $resultados_finales = array('mensage' => "ERROR.");
       echo json_encode($resultados_finales);
};
?>

1 个答案:

答案 0 :(得分:1)

捕获异常的最佳方法是将代码放在try catch块中。但在你的情况下,我认为你输错密码。导致错误的代码(异常)应该在try块中,而不是像这样捕获它。

    try{
   $db = new PDO("mysql:host=sql10.freesqldatabase.com;dbname=sql10181809", 
                   "sql10181809", "PASS");
     $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }catch(PDOException $e){
         echo $e->getMessage().'  '.'   '.getCode().'  '.getLine().'  
           '.getFile();
    }

您可以阅读有关异常处理here

的更多信息