MySQL中SELECT查询无法正常运行的PDO技术问题求助
解决你的MySQL PDO查询问题
嘿,我帮你梳理下这段代码里的几个关键问题,正是这些小错误导致查询没正常工作:
SQL条件逻辑写反了:你当前的SQL是
WHERE :team1=team1,这逻辑不对,应该用传入的参数匹配表中的字段,正确写法是WHERE team1 = :team1(字段名team1放在左边,绑定参数:team1放在右边)。调用了错误的执行方法:
$sth->query()是错误用法——PDO预处理语句对象(PDOStatement)没有query()方法,执行预处理查询必须用$sth->execute(),这才是触发SQL执行的正确方式。结果输出的索引错误:
fetchAll(PDO::FETCH_ASSOC)返回的是二维数组,每个子数组对应一条查询结果。你直接写$values[odds1]既没指定具体结果行,也没给索引加引号,正确写法应该是$values[0]['odds1'](如果有结果的话),而且最好先判断是否有返回结果,避免报错。
另外,建议你开启PDO的错误模式,调试时能看到具体错误信息,方便排查问题。初始化PDO连接时可以加上这个配置:
$pdo = new PDO($dsn, $username, $password, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ]);
修正后的完整代码示例:
$team1 = $_POST['teamname']; $sth = $pdo->prepare("SELECT odds1 FROM odds WHERE team1 = :team1"); $sth->bindParam(':team1', $team1); $sth->execute(); // 用execute替代错误的query $values = $sth->fetchAll(PDO::FETCH_ASSOC); // 先判断是否有结果再输出 if (!empty($values)) { echo $values[0]['odds1']; } else { echo "没有找到匹配的记录"; }
内容的提问来源于stack exchange,提问作者Chim
相关产品推荐
相关产品推荐

