PHP OOP - 我第一次尝试连接数据库

时间:2014-07-09 20:10:31

标签: php pdo

我尝试学习PHP OOP,只是尝试制作简单的脚本,从数据库中打印所有用户,我的代码如下:

<?php
/*  start config */
    define( "DB_HOST", "mysql:host=localhost;dbname=test" );    
    define( "DB_USER", "root" );
    define( "DB_PASS", "" );

/* end config */
try{
$connection = new PDO("DB_HOST","DB_USER","DB_PASS");
$connection->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "SELECT * FROM users";
$stmt = $connection->prepare( $sql );
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute();
    while( $row = $stmt->fetch()) {
           echo $row['user'];
    }
}catch{
  (PDOExeption $e);{
  echo $e->getMessage();
  }
}                    

?>

我尝试按照示例代码,在我眼中代码看起来不错,但它会抛出此错误: 解析错误:语法错误,意外&#39; {&#39;,期待&#39;(&#39;在D:\ xampp \ htdocs \ xampp \ oop \ andurit.php第18行

为什么呢?我很确定{必须在这里开始捕捉所以为什么它不起作用,我希望有些人解释我做错了什么:)

谢谢大家

4 个答案:

答案 0 :(得分:1)

您不需要第一个{;

<?php
    /*  start config */
        define( "DB_HOST", "mysql:host=localhost;dbname=test" );    
        define( "DB_USER", "root" );
        define( "DB_PASS", "" );

    /* end config */
    try{
    $connection = new PDO(DB_HOST,DB_USER,DB_PASS);
    $connection->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $sql = "SELECT * FROM users";
    $stmt = $connection->prepare( $sql );
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    $stmt->execute();
        while( $row = $stmt->fetch()) {
               echo $row['user'];
        }
    }catch(PDOException $e){
      echo $e->getMessage();

    }                    

    ?>

答案 1 :(得分:1)

  (PDOExeption $e);{
                  ^----remove this semi-colon
  echo $e->getMessage();

try / catch看起来像:

try {
   .... stuff happens
} catch (something $var) {
   ... do stuff
}

在解析器看到任何实际的catch代码之前,您的额外;正在终止try / catch。

答案 2 :(得分:1)

}catch{
  (PDOExeption $e);{
  echo $e->getMessage();
  }
}

这应该是:

} catch(PDOException $e) {

此外,我认为您希望您的连接看起来像这样:

$connection = new PDO(DB_HOST, DB_USER, DB_PASS); // no quotes around constants

答案 3 :(得分:0)

“Catch”声明已关闭。应该是这样的:

} catch (PDOException $e) {
echo $e->getMessage();
}