【发布时间】:2014-07-14 08:45:50
【问题描述】:
我正在尝试运行 MySQL PDO 查询。我不确定为什么会出现致命错误。我检查了其他帖子,但他们的答案似乎没有解决我的问题。
脚本连接数据库正常。用户名和密码是正确的,我已经在下面的脚本中删除了它们。
我的输出:
Connected to database
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[28000] [1045] Access denied for user 'nobody'@'localhost' (using password: NO)' in /home/a/public_html/d/inc/header.php:34 Stack trace: #0 /home/a/public_html/d/inc/header.php(34): PDO->__construct('mysql:host=;dbn...', NULL, NULL) #1 /home/a/public_html/d/inc/header.php(43): testdb_connect() #2 /home/a/public_html/d/article.php(3): include('/home/a/p...') #3 {main} thrown in /home/a/public_html/d/inc/header.php on line 34
我的代码:
<?php
/*** MySQL hostname ***/
$hostname = 'localhost';
/*** MySQL username ***/
$username = 'removed';
/*** MySQL password ***/
$password = 'removed';
try {
function testdb_connect(){
$dbh = new PDO("mysql:host=$hostname;dbname=removed", $username, $password);
return ($dbh);
}
echo 'Connected to database';
}
catch(PDOException $e) {
echo $e->getMessage();
}
$dbh = testdb_connect();
$id = $_GET[id];
echo 'dfsdfs ' . $id;
var_dump($dbh);
$sql = "SELECT * FROM 'radiologyArticles' WHERE 'id' = :id";
$stmt = $dbh->prepare($sql);
$stmt->bindParam(':id', $id);
$stmt->execute();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
?>
<section>
<header>
<h2><?php echo $row['articleTitle']; ?></h2>
<h3>A generic two column layout</h3>
</header>
<p>
<?php echo $row['articleBody']; ?>
</p>
</section>
<?php
}
// Close the PDO connection
$link = null;
?>
【问题讨论】:
-
但是您没有成功连接。
echo 'Connected to database';被称为在你调用你的连接testdb_connect()。 -
testdb_connect() 函数中 $username 和 $password 值的变量范围......并且不要将 try/catch 放在函数定义周围,将其放在对函数的调用周围
-
$username和$password不在函数testdb_connect()的范围内。要么将它们作为参数传递给该函数,要么不理会该函数而直接调用new PDO(...)。 -
Mark Baker,我应该在哪里放置 $username 和 $password 以防止范围界定问题?谢谢
-
@bobafart - 将它们作为参数传递给 testdb_connect() 函数