Вы также можете проверить, содержит ли ваш результат $ фактический результат:
if ($result != false) {
$row = $result->fetch_assoc();
}else{
// do something else!
// maybe trigger_error()?
}
Также имейте в виду, что если ваш результат содержит более одной строки, вы, скорее всего, захотите пройти через цикл
while ($row = $result->fetch_assoc()) {
$out_title = $row['title'];
}
Это также не даст вам получить ту ошибку, которую вы получили, потому что цикл while будет оценивать возвращаемое значение $ result-> fetch_assoc (), прежде чем присвоит его $ row, если он вернет false, $ row никогда не будет установлен и цикл while не запускается.