You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP函数无法返回SQL查询结果数组的语法错误排查求助

排查你的PHP函数问题

我帮你梳理一下这段代码里的几个关键问题,一个个来解决:

1. 变量作用域问题

函数内部的$pdo属于全局变量,默认情况下函数无法直接访问全局作用域的变量。你需要在函数内部声明它为全局变量,或者把$pdo作为参数传递给函数。

比如添加全局声明:

function frequenz_suchen_datum_zeit($fdatum_von = "2000-01-01", $fdatum_bis = "2020-01-01", $fuhrzeit_von = "00:00:00", $fuhrzeit_bis = "23:59:59") { 
    global $pdo; // 声明使用全局的$pdo变量
    // 后续代码...
}

2. return语句的变量名错误

你最后返回的是abfrage,但这个变量是带美元符号的$abfrage,少了$符号会导致PHP找不到对应的变量。正确写法是:

return $abfrage;

3. 数组索引未加引号

在echo语句里,$test [hg_ger_b]中的索引hg_ger_b没有加引号,PHP会把它当作常量解析,而不是字符串索引。应该改成:

echo $test['hg_ger_b'];

4. 严重的SQL注入风险

你直接把函数参数拼接到SQL语句里,这会导致严重的SQL注入漏洞,绝对不能在生产环境这么用。强烈建议使用PDO的预处理语句来绑定参数,示例如下:

function frequenz_suchen_datum_zeit($fdatum_von = "2000-01-01", $fdatum_bis = "2020-01-01", $fuhrzeit_von = "00:00:00", $fuhrzeit_bis = "23:59:59") { 
    global $pdo;
    $sql = "SELECT SUM(hg_ger_b) as hg_ger_b, SUM(hg_ger_v) as hg_ger_v, SUM(hg_zub_b) as hg_zub_b, SUM(hg_zub_v) as hg_zub_v, SUM(hg_ers_b) as hg_ers_b, SUM(hg_ers_v) as hg_ers_v, SUM(hg_rep) as hg_rep, SUM(pr_ger_b) as pr_ger_b, SUM(pr_ger_v) as pr_ger_v, SUM(pr_zub_b) as pr_zub_b, SUM(pr_zub_v) as pr_zub_v, SUM(pr_ers_b) as pr_ers_b, SUM(pr_ers_v) as pr_ers_v, SUM(pr_rep) as pr_rep, SUM(so_ser) as so_ser, SUM(so_mie) as so_mie, SUM(so_was) as so_was, SUM(so_wer) as so_wer, SUM(so_web) as so_web FROM frequenz WHERE datum BETWEEN :fdatum_von AND :fdatum_bis AND uhrzeit BETWEEN :fuhrzeit_von AND :fuhrzeit_bis";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':fdatum_von', $fdatum_von);
    $stmt->bindParam(':fdatum_bis', $fdatum_bis);
    $stmt->bindParam(':fuhrzeit_von', $fuhrzeit_von);
    $stmt->bindParam(':fuhrzeit_bis', $fuhrzeit_bis);
    $stmt->execute();
    $abfrage = $stmt->fetch();
    return $abfrage;
}

把这些问题都修复后,你的函数应该就能正常工作了。

内容的提问来源于stack exchange,提问作者fschneider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 04:47:35