每当我需要来自数据库的东西时,让我们说当用户登录时,我需要验证&得到userdata,我这样做:
num_rows
fetch_array
所以我的问题如下:
fetch_array
一样,如果它不存在,它将返回false或它做的任何事情。num_rows
为什么?答案 0 :(得分:1)
我知道这不是完美的答案,但我通常会这样做
$link = mysql_connect("localhost", "mysql_user", "mysql_password");
mysql_select_db("database", $link);
$num_rows = mysql_num_rows(mysql_query("SELECT * FROM table1", $link));
echo "$num_rows Rows\n";
答案 1 :(得分:0)
你发了两个问题,对我而言,他们是相关的。然而答案似乎是间接的答案,所以也许是一个简短的讨论?
我喜欢尽可能使用类属性和方法(读取:我理解它们),不仅为了方便起见,而且为了稳定性和终生。有1)一定程度的信任,它已被测试和2)它将至少保持到有人彻底测试它。此外,如果属性或方法发生变化,查找...替换通常会立即清除它。
过去这个,请考虑我的所作所为:
(object)$db=new mysqli(HOST_DEF, USER_DEF, PASS_DEF, DB_DEF);
if($db->connect_errno || $db->errno) {
//Do error stuff here
}
(string)$sql = sprintf("SELECT * FROM Table WHERE User='%s'",
filter_input(INPUT_POST, '$UserStringPassedInMaybe'));
(object)$result=$db->query($sql);
if(!$result || $result->num_rows()===0) {
@$result->free();
$db->close();
unset($sql);
//Handle that stuff here
}
你想以某种方式陷阱(量化)记录集,你可以如何压缩你的方式。但是,如果你想要做的只是测试记录集的存在,并且你做得足够多,那么你可以通过将其转换为返回布尔值的函数来保存几行代码,但是你可以&#39 ;当你只能将$ result本身作为一个布尔值(只要它是空的)时,仍然可以评估该返回。一种脏,因为它要么计算为布尔值false,要么是数组。从这个意义上说,不,你不需要num_rows。