SELECT Query не работает MySQL - PullRequest
0 голосов
/ 28 мая 2018

Я не могу заставить мой запрос работать.Когда я использую $ sth-> execute ();Я получаю чтение, но, насколько я знаю, довольно бесполезно для моей цели.Если я использую запрос, ничего не появляется.Имейте в виду, что я начинающий, когда дело доходит до кодирования.Кроме того, это школьный проект и ничего более.

Я не знаю, почему первая строка кода не будет реализована, поэтому посмотрите на строку ниже как часть кода:

$team1 = $_POST['teamname'];
$sth = $pdo->prepare("SELECT odds1 FROM odds WHERE :team1=team1");
$sth->bindParam(':team1', $team1);
$sth->query();
$values = $sth->fetchAll(PDO::FETCH_ASSOC);                 
echo $values[odds1];

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

Этот код должен давать сбой с ошибками, поэтому, если вам интересно, почему он «не работает», первое, что нужно проверить, - это журнал ошибок.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, обычно является признаком того, что вы нарушили Правило нуля, единицы или бесконечности из нормализация базы данных .Правильная нормальная форма будет иметь отношение «один ко многим» между одной записью и другими.

0 голосов
/ 28 мая 2018

Изменить

echo $values[odds1];

На

<code>echo "<p>Results:<pre>".print_r($values[odds1],true)."
\ n ";
...