私はいくつかのことを試しましたが、私のPHPコードでMySQLクエリを取得することはできません。整数である変数$ lastmsgをハードコーディングすると、クエリは機能しません。MySQL makeクエリには別の変数を含むPHP変数が含まれています
コードは2つのインスタンスで動作します:
- するとページが読み込まれると、クエリが
$lastmsg
が設定されていないため$pagination
を無視して、実行します。 - ボタンがlastmsgの値をこのページに送信します。このページは、lastmsgが設定されているため、今回は$ページングを参照してコードを再実行します。
また、クエリは動作しません。最初のインスタンスで完全に正常に実行され、変数がハードコードされているときに正常に戻ることが証明されています。 Firebugsは、lastmsgが投稿されていると報告しています。
問題は、クエリが$ lastmsgの値を受け取っていないことです(値が返されない)。 $ lastmsgが$ページネーションの中に座っているからです。
P.S.私はそれが注射保護を必要と認識しています...私はこの作業を取得しようとしている:
if(isset($_POST['lastmsg']) &&is_numeric($_POST['lastmsg'])){
$lastmsg = $_POST['lastmsg'];
$pagination = 'AND $wpdb->posts.ID < ".$lastmsg."';
} else {
$pagination = '';
}
$pageposts = $wpdb->get_results($wpdb->prepare("
SELECT * FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE $wpdb->posts.post_status = 'publish'
AND $wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_date < NOW()+INTERVAL 1 DAY
AND $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->term_taxonomy.term_id IN(3)
".$pagination."
ORDER BY $wpdb->posts.post_date DESC
LIMIT 10
"), OBJECT);
以下は
$pagination = 'AND $wpdb->posts.ID < ';
$pageposts = $wpdb->get_results($wpdb->prepare("
SELECT * FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE $wpdb->posts.post_status = 'publish'
AND $wpdb->posts.post_type = 'post'
AND $wpdb->posts.post_date < NOW()+INTERVAL 1 DAY
AND $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->term_taxonomy.term_id IN(3)
".$pagination."
".$lastmsg."
ORDER BY $wpdb->posts.post_date DESC
LIMIT 10
"), OBJECT);
どれソリューションを動作しませんか?
$pagination = 'AND $wpdb->posts.ID < ".$lastmsg."';
$pagination
内部リテラルAND $wpdb->posts.ID < ".$lastmsg."
を残すだろうと、あなたは、MySQLにそれを渡したときに、その文字列が有用何もしません。