0

我试图连接到我的数据库并关注一本书。我写了第一组代码,它没有工作。所以经过一番谷歌搜索后,我找到了第二个代码块。它工作正常,但我很想知道区别,因为我看不到它。

    <?php
try
{ 
    $huh = new PDO('mysql:host=localhost;dbname=ijdb', 'ijdbuser', 'test');
    $huh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $huh->exec("SET CHARATER SET utf8");
} catch (PDOException $e) {
    $ouput = 'Unable to connect to the database server. ' . $e->getMessage();
    include 'output.php';
}
    $output = 'Database connection established. ' . $e->getMessage();
    include 'ouput.php';
?>

<?php
try {
    $dbh = new PDO('mysql:host=localhost;dbname=ijdb', 'ijdbuser', 'test');
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $dbh->exec("SET CHARACTER SET utf8");
} catch (PDOException $e) {
    $output = "Error! " . $e->getMessage();
    include 'output.php';
}
    $output = 'Success!';
    include 'output.php'
?>
4

4 回答 4

1

第一个代码块中有三个错误:

  1. $huh->exec("SET CHARATER SET utf8"); 应该是 $huh->exec("SET CHARACTER SET utf8"); (缺少 C)

  2. $output = '建立数据库连接。' . $e->getMessage(); 应该是 $output = '建立数据库连接。'; 因为您只能在 Catch "trap" 内捕获异常

  3. 包括“输出.php”;应该包括'output.php';

于 2012-09-28T09:25:16.347 回答
0

include 'ouput.php';在第一个中,而不是include 'output.php';

于 2012-09-28T07:37:49.797 回答
0

您的 sql 语法有错误

$huh->exec("SET CHARATER SET utf8"); // Note: Charater written instead of Character
于 2012-09-28T07:38:01.783 回答
0

第一个代码块有语句

$output = 'Database connection established. ' . $e->getMessage();

在 catch 语句之外。变量 $e 仅在 catch 语句中定义。

于 2012-09-28T07:38:10.740 回答