2017-06-18 119 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脚本与数据库进行通信。任何想法如何在未来检查此类错误?再次感谢,非常感谢! –