Этот код должен давать сбой с ошибками, поэтому, если вам интересно, почему он «не работает», первое, что нужно проверить, - это журнал ошибок.PHP выведет там все виды предупреждений и ошибок, которые помогут с вашей отладкой, поэтому, если вы не знаете, где сейчас самое время это выяснить.
Техническое исправление заключается в том, что query()
- это неправильнометод для запуска на дескрипторе оператора.Вместо этого вы вызываете execute()
:
$sth = $pdo->prepare("SELECT odds1 FROM odds WHERE :team1=team1");
$sth->bindParam(':team1', $team1);
$sth->execute();
Вы можете минимизировать это:
$sth = $pdo->prepare("SELECT odds1 FROM odds WHERE :team1=team1");
$sth->execute([ ':team1' => $team1 ]);
Это потому, что execute
может принимать массив параметров.
Порядок аргументов в SQL обычно column=?
, но вы можете сделать это в любом порядке, сравнение MySQL является двунаправленным.Это сделает ваш код более обычным, если вы напишите свой запрос следующим образом:
$sth = $pdo->prepare("SELECT odds1 FROM odds WHERE team1=:team1");
Теперь имя столбца, например odds1
и team1
, обычно является признаком того, что вы нарушили Правило нуля, единицы или бесконечности из нормализация базы данных .Правильная нормальная форма будет иметь отношение «один ко многим» между одной записью и другими.