私はMySQLのクエリを生成して実行する以下のPHPスクリプトを持っていますが、現在クエリは空の結果を返しています。 (手動で私が期待される結果を取得していますPDOが空の結果を返す
{
"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
}
私は生成されたクエリを実行する場合は(正しい値に置き換え?)データベースに対して:
$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配列を与える例えばです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
既にデータベースに対して正しく機能している –