2016-02-19 96 views
0

我試圖獲得我的數據庫表中其中一個post_id字段等於我比較它的$postID變量的記錄數。當我使用130等整數替換{$postID}時,查詢按預期返回結果。但是,每當我嘗試使用$postID變量查詢我的數據庫時,都不會返回任何結果。我已檢查了$postID包含的內容,以確保post_id與正確的值進行比較,並且它包含整數值130爲什麼我的SQL查詢沒有返回任何記錄?

如果查詢與地方的$postID硬編碼130工作,爲什麼沒有當我使用$postID等於130以及工作嗎?

$postID = get_the_ID(); 
$postLikes = $wpdb->get_results(' 
    SELECT COUNT(*) FROM wp_post_likes WHERE post_id = {$postID} 
'); 

echo "<pre>"; 
    var_dump($postLikes); 
echo "</pre>"; 
+9

變量替換不發生在單引號的字符串。 – VolkerK

+0

這是正確的。你真棒,從來不知道。 – 10000RubyPools

+0

作爲PHP文檔中相應部分的補充:[php:單引號](http://php.net/manual/en/language.types.string.php#language.types.string.syntax.single)'[ ...]注意:與雙引號和heredoc語法不同,特殊字符的變量和轉義序列在單引號字符串中不會被擴展[...]' –

回答

4

變量替換不發生在單引號的字符串,見Variable parsing

而且我建議你使用參數化查詢,而不是有效載荷數據混合到實際的聲明,請參閱Protect Queries Against SQL Injection Attacks

$postLikes = $wpdb->get_col($wpdb->prepare( 
    'SELECT COUNT(*) FROM wp_post_likes WHERE post_id = %s', 
    get_the_ID() 
)); 
相關問題