这是一件非常简单的事情,但由于某些原因它无法运作。这是我的代码。
我正在制作函数(它是类的一部分),用于检查是否存在用户名或电子邮件:
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;
}
}
我很困惑。
答案 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.