我尝试学习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行
为什么呢?我很确定{必须在这里开始捕捉所以为什么它不起作用,我希望有些人解释我做错了什么:)
谢谢大家
答案 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();
}