我有下面的PHP脚本生成一个MySQL查询并运行它,但是目前查询返回一个空结果。PDO返回空结果
$sth = $dbh->prepare("SELECT TeamID FROM UserTeam WHERE UserID=? AND Deleted IS NULL");
$sth->execute(array($_POST['userID']));
$teams = $sth->fetchAll();
$sql = "SELECT * FROM Event WHERE UserID=? AND Deleted IS NULL";
if (count($teams) > 0) {
$sql .= " OR TeamID IN (";
foreach ($teams as $team){
$sql .= $team['TeamID'] . ",";
}
$sql = substr($sql, 0, -1);
$sql .= ")";
}
$sql .= " ORDER BY Created DESC LIMIT ?, 10 ";
$sth = $dbh->prepare($sql);
$sth->execute(array($_POST['userID'], $_POST['start']));
$events = $sth->fetchAll();
$response["success"] = 1;
$response["result"] = $events;
$response["sql"] = $sql;
$response["post"] = $_POST;
echo json_encode($response);
是例如给输出JSON阵列:
{
"post" : {
"start" : "0",
"userID" : "33"
},
"result" : [
],
"sql" : "SELECT * FROM Event WHERE UserID=? AND Deleted IS NULL OR TeamID IN (12,13,17) ORDER BY Created DESC LIMIT ?, 10 ",
"success" : 1
}
但是,如果我运行生成的查询(?用正确的值替换)对数据库手动我得到预期的结果( 10个返回结果)
更新
即使在更改SQL代硬编码值 代替 ?我仍然没有结果。
即
{
"post" : {
"start" : "0",
"userID" : "33"
},
"result" : [
],
"sql" : "SELECT * FROM Event WHERE UserID=33 AND Deleted IS NULL OR TeamID IN (12,13,17) ORDER BY Created DESC LIMIT 0, 10 ",
"success" : 1
}
试图通过一个变量,而不是'$ _ POST [“用户ID”]',你也可以通过你的连接'$ dbh->的setAttribute(PDO :: ATTR_ERRMODE,PDO后添加此启用错误方式: :ERRMODE_EXCEPTION);' –
直接在数据库中运行查询以查看是否出现错误。 – TurtleTread
已经说过它对数据库正确工作 –