【问题标题】:PDO query not returning correctly [closed]PDO 查询未正确返回 [关闭]
【发布时间】:2021-02-15 13:33:44
【问题描述】:

我无法在 if 部分返回特定的用户查询(否则工作正常):

if ( isset( $_POST[ 'name' ] ) ) {
    $person = $_POST[ 'name' ];
    $stmt = $pdo->prepare("SELECT AVG(ans_1) AS Average FROM responses WHERE email =?");
    $stmt->bind_param("s", $person);
    $stmt->execute();
} else {
    $stmt = $pdo->query("SELECT AVG(ans_1) AS Average FROM responses");
}

$result = $stmt->fetchColumn();
$json = json_encode($result);
echo $json;

php 由 ajax 调用,为变量提供 POST:

var user = "ratsnitchbrianthegoodtimeruiner";
$.ajax({
          url: "test.php",
          type: "POST",
          data: {name: user},
          dataType: "json",
          success: function (data) {
              alert(data);
}
});

我知道我的 ajax 脚本 POST 变量正在工作,因为当我将 dataType 更改为 html 并将 php 修改为只输入两个 echo 命令时,如下所示:

if ( isset( $_POST[ 'name' ] ) ) {
    $person = $_POST[ 'name' ];
    echo $person;
} else {
    echo ("No one set");
}

alert(data) 提示成功。

所以我在 if 中的 PDO 语句一定有问题? else 返回数据就好了。

感谢您的帮助!

###################################

注意合并到这个问题的人:Receive JSON POST with PHP 不相关。

我能够很好地获取 POST 数据(用户名)。 (他们不在那个问题中)。

我在 else 语句中得到了很好的 json 响应(同样是该问题中的一个问题,在这里不是问题)。

90 分钟后..

【问题讨论】:

    标签: php ajax pdo


    【解决方案1】:

    您正在使用 MySQLi 语法来绑定参数,而不是 PDO 语法。应该是:

        $stmt = $pdo->prepare("SELECT AVG(ans_1) AS Average FROM responses WHERE email = :email");
        $stmt->bindParam(":email", $person);
    

    【讨论】:

    • PDO 新手,除了减少行数来结合执行和绑定还有什么好处吗? $stmt->execute(["email"' , $person]);为了 ? $stmt->execute(["email"' => $person]);对于:电子邮件
    • 不,它们是等价的。我通常使用组合方法。
    • 但是你的语法错误,应该是["email" => $person]
    猜你喜欢
    • 2013-08-15
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    相关资源
    最近更新 更多