У меня здесь странная проблема, и я надеюсь, что у кого-то есть решение.Как указано в вопросе, MySQL возвращает данные, но все значения NULL
.
Вот запрос:
public function getPort($id) {
$sql = "SELECT c.id, c.port as number, d.type, d.spec, d.transfer as speed
FROM details a
LEFT JOIN port_to_drive b ON a.drive_id = b.drive_id
LEFT JOIN port c ON b.port_id = c.id
LEFT JOIN port_type d ON c.port_type = d.id
WHERE a.id = $id";
$stmt = $this->db->query($sql);
return $stmt->fetchObject();
}
Я пытаюсь вернуть объект, но также пыталсявозвращает массив и результат тот же.
Вот что он возвращает:
object(stdClass)[116]
public 'id' => null
public 'number' => null
public 'type' => null
public 'spec' => null
public 'speed' => null
Если я использую fetch()
и возвращаю массив, индексы есть, но значения все еще NULL
.Когда я запускаю этот запрос непосредственно в MySQL, я получаю ожидаемые данные.
Вот атрибуты, которые я устанавливаю для моего соединения PDO, если это помогает.
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false
Я подозреваю, чтоможет быть связано с тем, что ничего не выбрано из таблицы в предложении FROM
или WHERE
.
Вот результат непосредственно из MySQL.Запрос обязательно должен вернуть строку.