2017-06-18 148 views
-1

我正在構建一個在WordPress網站上運行的小型PHP腳本。COUNT查詢在使用時返回null

我想查詢我的表中有多少項目有特定的電子郵件。出於某種原因,它不起作用時,不使用where語句,但一旦我添加WHERE [email protected],它將返回空值。我不知道爲什麼。

<?php 
    require('../wp-config.php'); 
    $conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $email = $_GET['email']; 
    global $wpdb; 

    // This works 
    $countQuery = "SELECT COUNT(*) as count FROM `".$wpdb->prefix."mytable`"; 

    // Once I add a filter, it returns null 
    $countQuery = $countQuery." WHERE `email`=`[email protected]`"; 

    $rs = mysql_query($countQuery); 
    $result = mysql_fetch_array($rs); 

    // Later, I'd like to access $result['count'] 
    // but the $result itself is NULL 
    var_dump("result", $result); 
?> 

我嘗試添加以下行,看看我是否有任何錯誤,但沒有額外的輸出顯示:

ini_set("display_errors", "1"); // shows all errors 
ini_set("log_errors", 1); 
ini_set("error_log", "/tmp/php-error.log"); 
error_reporting(E_ALL); 
ini_set('display_errors', 'on'); 

如何解決這個問題?爲什麼這會出現?我不確定它是否與WordPress有任何關係,但由於僅僅通過添加WHERE [email protected]就打破了功能。

+0

你使用的郵件反引號是用於列名..所以mysql認爲電子郵件地址是列名..嘗試使用單引號..周圍的電子郵件 – scaisEdge

+0

我看到這被標記爲重複。我其實並不認爲對「重複」的引用將有助於OP。 *答案*幾乎是相同的答案,但*問題*完全不同。 –

回答

2

這是太長的評論。

你的查詢有一個錯誤:

SELECT COUNT(*) as count 
FROM mytable -- simplified for illustration 
WHERE `email` = `[email protected]` 

如果你只是跑對數據庫此查詢時,它會說像[email protected]是不是一個有效的列或類似的東西。

因此,第一條建議是測試您的查詢。其次,如果你參數化你的查詢 - 這是正確的事情 - 那麼你永遠不會有這個問題。使用參數值查詢查詢可能會導致難以解決語法問題(以及SQL注入漏洞)。

+0

*您的查詢有錯誤:* - 抱歉,這是錯誤? –

+0

運行它並查看錯誤是什麼。提示:你沒有引用電子郵件名稱,但這不是正確的解決方案。 –

+0

啊,引號代替反引號。感謝那!唷!我沒有直接訪問數據庫,我只使用PHP腳本與數據庫進行通信。任何想法如何在未來檢查此類錯誤?再次感謝,非常感謝! –