我已經嘗試了幾件事,但我無法在我的PHP代碼中獲取MySQL查詢來工作。請注意,當我硬編碼整數變量$ lastmsg時,該查詢確實工作。MySQL的查詢包含PHP變量,其中包含另一個變量
代碼工作在兩種情況下:
- 頁面加載,查詢運行,忽略
$pagination
因爲$lastmsg
未設置。 - 一個按鈕將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);
任何解決方案?