mysql_query()非常奇怪地失败了

时间:2011-07-11 13:07:30

标签: php mysql

这是一件非常简单的事情,但由于某些原因它无法运作。这是我的代码。

我正在制作函数(它是类的一部分),用于检查是否存在用户名或电子邮件:

public function exists ($what, $who)
{
    $sql = "SELECT * FROM users WHERE $what = $who";
    $query = mysql_query($sql);

    if (mysql_num_rows($query) != 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

该函数不返回任何内容。事实上,如果我通过常规PHP运行该查询,它也不返回任何内容。我不明白为什么。

以下代码完美地返回新闻条目:

function fetch($id = '') 
{
    if (empty($id))
    {
        $query = 'SELECT * FROM news ORDER BY id desc';
    }
    elseif (is_numeric($id))
    {
        $query = "SELECT * FROM news WHERE id = $id";
    }
    else
    {
        $route->to(SITE_URL);
    }
    $result = mysql_query($query);

    if (mysql_num_rows($result) > 0)
    {
        return $result;
    }

}

我很困惑。

2 个答案:

答案 0 :(得分:5)

问题是您的查询中缺少引号:

 $sql = "SELECT * FROM users WHERE $what = $who";
 //SELECT * FROM users WHERE username = Mario  is not a valid query

应该是:

 $sql = "SELECT * FROM users WHERE $what = '$who'";

其他查询正在运行,因为您正在检查id,在这种情况下是针对字符串(在这种情况下,您需要引号)

答案 1 :(得分:0)

可能查询执行失败,并且您在php.ini

屏幕上关闭了错误

尝试在正确执行查询时添加中间检查:

 $query = mysql_query($sql); 

 if ($query === FALSE) {

     // log error with mysql_errno($conn) and mysql_error($conn);

 } else {

     if (mysql_num_rows($query) != 0) {

         return true;

etc. etc.