我尝试了看似最直观的方法
$query = "SELECT * FROM members
WHERE username = '$_CLEAN[username]'
AND password = '$_CLEAN[password]'";
$result = mysql_query($query);
if ($result)
{ ...
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为mysql_query即使返回0行也会返回true值.
我基本上只想在返回一行时才在该条件下执行逻辑.
如果您正在检查一行:
if ($Row = mysql_fetch_object($result)) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
您可以使用mysql_fetch_array(),或者其他,但原则是相同的.如果您正在预期1行或更多行:
while ($Row = mysql_fetch_object($result)) {
// do stuff
}
Run Code Online (Sandbox Code Playgroud)
这将循环直到它用完行,此时它将继续.
从结果集中检索行数.此命令仅对返回实际结果集的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
}
}
Run Code Online (Sandbox Code Playgroud)
如果你只退出数据库,这一切都很好.如果您更改或删除数据库中的行,并想知道有多少受其影响...
要检索受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();
Run Code Online (Sandbox Code Playgroud)
mysql_query()只有FALSE在查询失败时才会返回.TRUE即使您没有行,它也会返回,但是成功查询了数据库.
$sql = "SELECT columns FROM table";
$results = mysql_query($sql, $conn);
$nResults = mysql_num_rows($results);
if ($nResults > 0) {
//Hurray
} else {
//Nah
}
Run Code Online (Sandbox Code Playgroud)
这应该工作.
| 归档时间: |
|
| 查看次数: |
34754 次 |
| 最近记录: |