为什么要使用num_rows

时间:2017-04-03 05:54:50

标签: php mysql sql

每当我需要来自数据库的东西时,让我们说当用户登录时,我需要验证&得到userdata,我这样做:

  1. 检查用户是否存在num_rows
  2. 使用fetch_array
  3. 获取用户数据

    所以我的问题如下:

    1. 我只是在思考,是不是有更简单的方法来做这一切。就像使用fetch_array一样,如果它不存在,它将返回false或它做的任何事情。
    2. 如果有一种1语句方式可以执行此操作,那么您需要num_rows为什么?

2 个答案:

答案 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。