2012-09-28 107 views
0

我试图连接到我的数据库和一本书。我写了第一组代码,它不起作用。所以一些谷歌搜索后,我找到了第二块代码。它工作正常,但我很想知道差别,因为我看不到它。从php连接到mysql

<?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' 
?> 
+0

不知道问题所在。但是,如果你使用mysqli,会更好,因为mysql会被废弃...... – Mathlight

+0

只有这样,用户才能看到消息!没有其他的。 –

+0

@TWCrap他使用的是PDO,而不是mysql。 – Barmar

回答

0

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

0

因为在第一个块使用$output = 'Database connection established. ' . $e->getMessage();但你不属于例外,因此不能找到$e

0

你有一个错误您的SQL语法

$huh->exec("SET CHARATER SET utf8"); // Note: Charater written instead of Character 
0

第一个代码块具有声明

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

外部的catch语句。变量$ e仅在catch语句内定义。

1

你必须在第一个代码块中的三个错误:

  1. $ huh-> EXEC( “SET字节字符集UTF8”); 应该是 $ huh-> exec(“SET CHARACTER SET utf8”); (缺少C)

  2. $ output ='数据库连接已建立。 '。 $ E->的getMessage(); 应该是 $ output ='建立了数据库连接。 “; ,因为你只能在捕捉“陷阱”内捕捉豁免

  3. 包括'ouput.php'; 应该是 include'output.php';