我有一段时间没有接触过PHP并尝试选择数据库中的5个最新条目并将它们打印到屏幕上。
我看到不再建议使用mysql命令,而改用PDO-> mysql。
我的查询是这样的:
SELECT id,title,date,author FROM table ORDER BY date DESC LIMIT 5;
我假设我必须将值放入数组中并创建一个循环并输出结果。
<?php
$db = new PDO('mysql:dbhost='.$dbhost.';dbname='.$dbname, $user, $pass);
while () {
print($title[$i], $date[$i], $author[$i]);
$i++
}
$db = null;
?>
我被上面的代码卡住了。
更新:$ db = new PDO ....行正在报告错误消息:
PHP Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] Can't connect to local MySQL server through socket... in /var/...
确认已安装并启用了PDO。服务器上的其他Web应用程序可以连接到同一台远程mysql服务器。
最佳答案
<?php
$host = 'localhost'; $db = 'db-name'; $user = 'db-user'; $pw = 'db-password';
$conn = new PDO('mysql:host='.$host.';dbname='.$db.';charset=utf8', $user, $pw);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
?>
<?php
$sql = "SELECT id,title,date,author FROM table ORDER BY date DESC LIMIT 5";
$query = $conn->prepare($sql);
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
$totalRows = $query->rowCount();
?>
<?php do {
// print your results here ex: next line
echo 'Title: '.$row['title'].' Date: '.$row['date'].' Author: '.$row['author'].'<br>';
} while ($row = $query->fetch(PDO::FETCH_ASSOC)); ?>
祝您编码愉快!
不要忘记关闭和释放资源
<?php $query->closeCursor(); ?>
编辑
建议您在确认代码功能符合预期后,建议不要回显错误消息。但是,如果您只想使用纯文本,则可以执行此操作...
您可以将其添加到您的连接块...
if ($conn->connect_error) {
die("Database Connection Failed");
exit;
}
您还可以更改查询块...
try {
$sql = "SELECT id,title,date,author FROM table ORDER BY date DESC LIMIT 5";
$query = $conn->prepare($sql);
$query->execute();
$row = $query->fetch(PDO::FETCH_ASSOC);
$totalRows = $query->rowCount();
} catch (PDOException $e) {
die("Could not get the data you requested");
exit;
}
同样,建议不要回显错误。将错误检查仅用于进行调试。