gpt4 book ai didi

php - SELECT 查询不起作用 MySQL

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:44 24 4
gpt4 key购买 nike

我的查询似乎无法正常工作。当我使用 $sth->execute();我确实得到了阅读,但据我所知,这对我的目标来说毫无值(value)。如果我使用查询,则不会显示任何内容。请记住,在编码方面我是初学者。此外,这是一个学校项目,仅此而已。

我不知道为什么第一行代码不会实现,所以请看下面一行作为代码的一部分:

$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];

最佳答案

这段代码应该会因错误而崩溃,所以如果您想知道为什么它“不起作用”,首先要检查的是您的错误日志。 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");

现在拥有像 odds1team1 这样的列名通常表明您违反了 Zero, One or Infinity Ruledatabase normalization .一个适当的范式应该是一个记录和其他记录之间的一对多关系。

关于php - SELECT 查询不起作用 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50569979/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com