我试图学习如何从mysql语句转到编写PDO语句。
我有我的数据库设置及其连接,但现在我试图弄清楚如何从我的表中提取数据。
这是一个简单的例子。 这就是我以前做的......
<?php
$images = mysql_query("SELECT title FROM knollsnews ORDER BY date DESC LIMIT 4");
while ($image=mysql_fetch_array($images))
{
?>
<li><a href="http://<?php echo $_SERVER['SERVER_NAME']; ?>/notices/notice.php?id=<?=$image["id"] ?>"><?=$image["title"] ?></a></li>
<?php
}
?>
现在我试图弄清楚如何将其转换为PDO方法。
我已尝试过以下操作,但似乎无法使其正常工作。
<?php
$images = mysql_query("SELECT `title` FROM knollsnews ORDER BY `date` DESC LIMIT 4");
$result->setFetchMode(PDO::FETCH_BOTH);
while($result = $image->fetch()){
?>
我已经阅读了手册和谷歌有关转换此内容的方法,但对于我的生活似乎无法理解它。
按照我以前的方式,我目前在这一行上收到错误:
while ($image=mysql_fetch_array($images))
什么是PDO相当于此?这可能会帮助我。
我不是在寻找一个写给我的答案,但我觉得如果我能看到一个真实世界的代码转换它会帮助我。如果有人能指出我在正确的方向,我将不胜感激。
更新 做了一些阅读后,我意识到在我的网站上使用我需要创建另一种连接到我的数据库的方法。 这是我的本地设置:
<?php
try {
$db = new PDO('mysql:host=localhost;dbname=knolls', 'root', 'pdslo');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo $e->getMessage();
die();
}
?>
这是我的新格式化代码:
<?php
include_once($_SERVER['DOCUMENT_ROOT']."/inc/database.php");
$sql = "SELECT `id`, `title` FROM `knollsnews` ORDER BY `date` DESC LIMIT 4";
$query = $db->prepare($sql);
$query->execute();
foreach($query->fetchAll() as $img){
?>
<li><a href="notices/notice.php?id=<?php echo $img->id; ?>">
<?php echo $img-> title; ?>
</a>
</li>
<?php
}
?>
现在唯一的错误是:
注意:尝试在第13行获取非对象的属性
这是:<?php echo $img-> title; ?>
我不明白为什么它说标题是非对象?