Javascript 获取结果行的计数

Javascript 获取结果行的计数,javascript,php,ajax,Javascript,Php,Ajax,我尝试用JS和PHP做一些事情 我在Ajax中调用了一个PHP文件,希望这段代码返回结果行的计数。所以我附和它: $connexion = new PDO($source, $utilisateur); $requete = "SELECT * FROM scores WHERE pseudo = '".$_POST['login']."' AND Score >= 0"; $resultat = $connexion->query($requete); echo ($result

我尝试用JS和PHP做一些事情

我在Ajax中调用了一个PHP文件,希望这段代码返回结果行的计数。所以我附和它:

$connexion = new PDO($source, $utilisateur);
$requete = "SELECT * FROM scores WHERE pseudo = '".$_POST['login']."' AND Score >= 0";
$resultat = $connexion->query($requete);

echo ($resultat->rowCount());
当我试图在Ajax中完成它时,它不起作用,它返回一个致命错误:调用非对象上的成员函数rowCount

$.ajax({
    url: "../php/levelState.php",
    type: "POST"
}).done(function(levelUnlocked) {
    // Affichage de l'écran de sélection 
    $("#title, #game").hide();
    $("link").attr({rel:"stylesheet", href:"../css/select.css"});
    $("#select").fadeIn("slow"); 
    for (var i = 0; i < levelUnlocked; i++) {
        $('#' + parseInt(levelUnlocked + 1)).removeClass('levelLock').addClass('level');
    } 
});
})

谢谢你的帮助

如中所述

查询返回PDO语句对象,失败时返回FALSE


我的最佳猜测是您的查询失败,$resultat的值为FALSE,这就是为什么您不能对其运行rowCount方法。

您的请求返回null。当您执行$resultat->rowCount时,您的应用程序将产生致命错误。您应该检查$resultat是否为空

无论如何,您当前的查询等于:从pseudo=和Score>=0;的分数中选择*;。这就是你犯这个错误的原因。顺便说一下,你应该使用事先准备好的语句

为了解决您的问题,您应该指定在ajax函数中发送的哪些数据是我添加的关键字数据


为了修复您的PHP,我会这样做

header('Content-Type:application/json');
$connexion = new PDO($source, $utilisateur);
$stmt = $connexion->prepare("SELECT COUNT(*) FROM scores WHERE pseudo = ? AND Score >= 0");
$stmt->execute(array($_POST['login']));
$res = $stmt->fetch(PDO::FETCH_NUM);
echo json_encode(array_pop($res));

您的php脚本已损坏,请修复该问题。在我看来,您还应该在PHP脚本中返回json,以便它发送JS可以轻松处理的内容。我试图理解您的响应,但在这种情况下,查询不会失败,因为至少注册了on score。请尝试在不使用Ajax的情况下运行PHP脚本,并调试数据库调用。数据库调用有问题,可能是数据库连接或表结构有问题。如果没有实际的错误消息,我无法帮助您。您是对的,$resultat变量为false,我还有任何错误。我确实喜欢你的例子,所以我传递了数据,但事实上,如果我理解我的请求,可以找到结果吗?我有一个对应于查询的值…问题解决了!没有结果,因为我在表格的名称上犯了一个错误…我很高兴这有帮助。你可以考虑“准备好的声明”的答案。
header('Content-Type:application/json');
$connexion = new PDO($source, $utilisateur);
$stmt = $connexion->prepare("SELECT COUNT(*) FROM scores WHERE pseudo = ? AND Score >= 0");
$stmt->execute(array($_POST['login']));
$res = $stmt->fetch(PDO::FETCH_NUM);
echo json_encode(array_pop($res));