Из того, что я помню о PDO / SQL (я перешел в MVC / Doctrine некоторое время назад), эта часть кажется немного избыточной
$stmt = $this->database->connect()->prepare("SELECT ? FROM users"); //<-
$stmt->execute(["username"]); //<-
и может быть заменена на
$stmt = $this->database->connect()->prepare("SELECT username FROM users"); //<-
поскольку вы только хотите получить данные, найденные в столбце имени пользователя, связывать их нет необходимости (в любом случае это невозможно в PDO).
Причина, по которой ваш запрос не выполненявляется то, что вы используете fetch
сверх fetchAll
, который возвращает только первую строку результатов, в то время как при этом он не даст желаемого результата (что я предполагаю, чтобы проверить, существует ли уже имя пользователя).Даже тогда (как указывает Иван Вартанян) вам нужно будет foreach
или in_array
над $resource
, поскольку его результаты все равно отправляются в виде массива.
Реально вам не нужно искать ипереберите все данные в PHP, рассмотрите возможность поиска переданных вами данных имени пользователя с помощью SQL (код не проверен);
public function handleUpdates($updates) {
$stmt = $this->database->connect()->prepare("SELECT username FROM users WHERE username = ?");
$stmt->execute(array($update["message"]["chat"]["username"]));
$resource = $stmt->fetch(PDO::FETCH_ASSOC);
if (!$resource) {
foreach ($updates["result"] as $update) {
$text = $update["message"]["text"];
$args = $update["message"]["chat"]["username"];
if ($text === "/start") {
$this->database->add($args);
}
}
}
}