【发布时间】:2020-07-08 19:50:16
【问题描述】:
我的用户表中有一个包含“名字”和“姓氏”列的数据库。使用 Ajax,我想获取名称以 S 开头的所有用户,然后在列表中显示他们的名字和姓氏。所以它应该向我展示如下内容:
- 萨拉·安德森
- 肖恩·韦斯特
这是我用来获取用户列表的:
public function searchName($searchName)
{
$pdo = Db::connect();
$stmt = $pdo->prepare("SELECT firstname, lastname FROM users WHERE firstname LIKE :searchName OR lastname LIKE :searchName");
$stmt->execute(['searchName' => '%' . $searchName . '%']);
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
return $result;
}
这是我循环结果的 JS 函数
function viewResults(result) {
const results = document.getElementById("results");
results.innerHTML = "";
for (let i = 0; i < result.length; i++) {
const li = document.createElement("li");
li.innerHTML = result['i'];
results.appendChild(li);
}
}
当我运行它时,它会显示正确数量的列表项,但是所有列表项都是“未定义”。我不能使用:
li.innerHTML = result['i']['firstname']['lastname'];
当我使用 fetch() 而不是 fetchAll() 时,上述内容确实可以正常工作,唯一的问题是 fetch() 只返回一个用户。我猜问题是 fetchAll() 在数组中返回一个数组?我尝试在我的 SQL 查询中同时使用 foreach 和 while,但都没有帮助。
【问题讨论】:
-
你试过
li.innerHTML = result['i']['firstname'] +' ' + result[i]['lastname'];吗?我认为每个结果[i] 都有两个属性,即firstname和latname,每个都应该单独访问。 -
@DhruvShah 感谢您的建议!我试过只使用 ['i']['firstname'] (省略姓氏),但这只是在控制台中给了我以下错误:TypeError: Cannot read property 'firstname' of undefined
-
在这种情况下,您可能需要检查
result中的内容。您可以尝试在viewResult方法中添加console.log(result)并检查result中的内容是什么
标签: javascript php sql ajax