У меня есть база данных со столбцами «имя» и «фамилия» в моей таблице «Пользователи». Используя 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 функция для l oop результатов
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);
}
}
Когда я запускаю это, он отображает правильное количество элементов списка, однако все элементы списка это "undefined" . Я не могу использовать:
li.innerHTML = result['i']['firstname']['lastname'];
Вышеуказанное работает нормально, когда я использую fetch () вместо fetchAll (), единственная проблема в том, что fetch () возвращает только одного пользователя. Я предполагаю, что проблема в том, что fetchAll () возвращает массив внутри массива? Я пробовал использовать как foreach, так и while в моем запросе SQL, но ничего из этого не помогло.