Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么要使用num_行_Php_Mysql_Sql - Fatal编程技术网

Php 为什么要使用num_行

Php 为什么要使用num_行,php,mysql,sql,Php,Mysql,Sql,每当我需要从数据库中获取信息时,比如说当用户登录时,我需要验证并获取用户数据时,我会这样做: 检查用户是否存在num\u行 使用fetch\u数组获取用户数据 因此,我的问题如下: 我只是在想,有没有更简单的方法来做这一切。就像只使用fetch_array一样,如果它不存在,它将返回false或它执行的任何操作 如果有一种单语句方式来实现这一点,那么您需要num\u rows做什么 我知道这不是一个完美的答案,但我经常这样做 $link = mysql_connect("localhost",

每当我需要从数据库中获取信息时,比如说当用户登录时,我需要验证并获取用户数据时,我会这样做:

  • 检查用户是否存在
    num\u行
  • 使用
    fetch\u数组获取用户数据
  • 因此,我的问题如下:

  • 我只是在想,有没有更简单的方法来做这一切。就像只使用
    fetch_array
    一样,如果它不存在,它将返回false或它执行的任何操作
  • 如果有一种单语句方式来实现这一点,那么您需要
    num\u rows
    做什么

  • 我知道这不是一个完美的答案,但我经常这样做

    $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)某种程度的信任已经过测试,2)至少在有人对它进行彻底测试之前,它会一直存在。此外,如果属性或方法发生更改,则Find…Replace通常会立即将其清除

    过去,考虑我所做的:

    (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
    }
    

    您希望以某种方式捕获(量化)记录集,并且您可以压缩这样做的方式。但是,如果您只想测试记录集的存在性,并且做得足够多,那么您可以通过将其划分为返回布尔值的函数来节省几行代码,但您仍然在计算该返回值,而您可以将$result本身作为布尔值进行计算(只要它是空的)。有点脏,因为它要么计算为布尔值false,要么计算为数组。从这个意义上说,不需要,您不需要num_rows。

    我添加了PHP标记,因为这看起来不像是MySQL的问题。您不使用num_rows和fetch_array在任何编程语言中使用MySQL吗?@RubyRacer您在哪里看到了
    mysqli
    弃用通知?根据手册,这是不正确的信息。对不起,是mysql,不是mysqli。。我的错。。。输入错误您不需要num_行,您的断言完全正确。请。已在PHP7中删除。了解使用PDO的语句,并考虑使用PDO,请不要使用答案来询问澄清问题。