我盯着代码看了好几个小时,想看看我遗漏了什么。也许有人能给我指一个正确的方向。
首先,我有一个包含多个表的数据库。一个用于存储产品位置和详细信息的图像。我已经建立了页面,让我查看,编辑和添加产品。这一切都很好。
我现在正试着做一些简单的事情,但它不起作用。我在数据库中创建了一个表“Contacts”,并添加了行“name、street、city、zip、phone、email”。我已经用测试数据填充了这个表。
我试图让我的页面读取数据并显示在屏幕上。我已经写了一个完整的html页面,并试图让它工作。在受挫之后,我求助于下面一个非常简单的php脚本。我一直收到SQL错误“Notice:Undefined index:name in C:\wamp\www\woody\Admin\index.php on line 38”我知道第一个索引名为“name”我还试图用“$results['name']”和“$results['1'%”替换“$results['name'%”。似乎什么都没用。有人看到我疲惫的眼睛缺了什么吗?
<body>
<?php
require_once("../includes/db.php");
$sql = "SELECT * FROM contact";
$query = $conn->prepare( $sql );
$query->execute();
$results = $query->fetchAll( PDO::FETCH_ASSOC );
echo htmlentities($results['name']);
?>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
最佳答案
echo htmlentities($results[0]['name']);
这是正确的方法,因为您正在使用返回嵌套数组的
fetchAll()
。或者,当您选择许多行时更合适的方法
foreach ($results as $row)
{
echo htmlentities($row['name']);
}
如果只想选择一行,则必须使用
fetch()
方法而不是fetchAll()
。你可以在我写的指南中看到各种取回模式,The only proper guide on PDO如果返回空数组,则表示没有用示例数据填充表
也有出错的可能。您必须按照My PDO Statement doesn't work中的说明报告它们