我尝试了一种看似最直观的方法
$query = "SELECT * FROM members
WHERE username = '$_CLEAN[username]'
AND password = '$_CLEAN[password]'";
$result = mysql_query($query);
if ($result)
{ ...
但是这不起作用,因为mysql_query
返回一个真值,即使返回0行。
我基本上只想在返回一行时才在该条件下执行逻辑。
答案 0 :(得分:22)
if (mysql_num_rows($result)) {
//do stuff
}
答案 1 :(得分:7)
如果您要检查一行:
if ($Row = mysql_fetch_object($result)) {
// do stuff
}
您可以使用mysql_fetch_array()
或其他,但原则是相同的。如果您正在预期一行或多行:
while ($Row = mysql_fetch_object($result)) {
// do stuff
}
这将循环直到它用完行,此时它将继续。
答案 2 :(得分:6)
从结果集中检索行数。此命令仅对返回实际结果集的SELECT或SHOW等语句有效。
如果没有匹配,那么零将是返回值并且有效FALSE
。
$result = mysql_query($query);
if(mysql_num_rows($result))
{ //-- non-empty rows found fitting your SQL query
while($row = mysql_fetch_array($result))
{//-- loop through the rows,
//-- each time resetting an array, $row, with the values
}
}
如果您只退出数据库,这一切都很好。如果您更改或删除数据库中的行,并想知道有多少行受到影响...
要检索受INSERT,UPDATE,REPLACE或DELETE查询影响的行数,请使用
mysql_affected_rows()
。
$result = mysql_query($query);
if(mysql_affected_rows())
{ //-- database has been changed
}
//-- if you want to know how many rows were affected:
echo 'Rows affected by last SQL query: ' .mysql_affected_rows();
如果查询失败, mysql_query()
将仅返回FALSE
。即使您没有行,它也将返回TRUE
,但成功查询了数据库。
答案 3 :(得分:5)
$sql = "SELECT columns FROM table";
$results = mysql_query($sql, $conn);
$nResults = mysql_num_rows($results);
if ($nResults > 0) {
//Hurray
} else {
//Nah
}
这应该有用。
答案 4 :(得分:3)
我使用了以下内容:
if($ result!= 0&& mysql_num_rows($ result)){
如果查询没有返回任何内容,那么它将是一个布尔结果,它的值将为0.
所以你检查它是否为零,如果没有,我们知道那里有什么东西..
然而,有时它会返回一个1,即使那里没有任何东西,所以你那么检查是否有任何行,如果那里有一个完整的行,你肯定知道结果已经返回
答案 5 :(得分:2)
这样:
$query = "SELECT * FROM members WHERE username = '$_CLEAN[username]'
AND password = '$_CLEAN[password]'";
$result = mysql_query($query);
$result = mysql_fetch_array($result);
//you could then define your variables like:
$username = $result['username'];
$password = $result['password'];
if ($result)
{ ...
我喜欢它,因为我对mysql_query返回的结果非常具体。
-Ivan Novak
答案 6 :(得分:1)
以及...
by definiton mysql_query:
mysql_query()返回一个资源 成功,或错误时为FALSE。
但是你需要理解的是,如果这个函数返回一个不同于FALSE的值,那么查询运行时没有问题(语法正确,连接仍然活着等),但这并不意味着你的查询返回了一行。
例如
<?php
$result = mysql_query("SELECT * FROM a WHERE 1 = 0");
print_r($result); // => true
?>
所以,如果你得到FALSE,你可以使用
mysql_errorno()
和mysql_error()
知道发生了什么......
以下是:
您可以使用mysql_fetch_array()从查询中逐行获取
答案 7 :(得分:0)
$result = mysql_query(...);
if(false !== $result)
{
//...
}