Php 如何获取mysqli_num_行值

Php 如何获取mysqli_num_行值,php,Php,我正在从一本书上学习和做一些练习,一个问题后我有了一个答案 我想知道mysqli_num_行的值,以进一步了解我的错误,但我没有得到值 我已经检查过了,如果我放回显'r';我在屏幕上得到了一个r,所以我知道这行正在执行,但是我不能得到任何关于mysqli_num_行的值 要在屏幕上显示该值,我应该在最后一行写什么 $q = "SELECT user_id, first_name FROM users WHERE email='$e' AND pass=SHA1('$p')"; $r = @mys

我正在从一本书上学习和做一些练习,一个问题后我有了一个答案

我想知道mysqli_num_行的值,以进一步了解我的错误,但我没有得到值

我已经检查过了,如果我放回显'r';我在屏幕上得到了一个r,所以我知道这行正在执行,但是我不能得到任何关于mysqli_num_行的值

要在屏幕上显示该值,我应该在最后一行写什么

$q = "SELECT user_id, first_name FROM users WHERE email='$e' AND pass=SHA1('$p')";
$r = @mysqli_query($dbc, $q); // Run the query.
echo mysqli_num_row($r);
现在我只是得到一个空白屏幕


谢谢。

你可能跳过了一封信。尝试:

echo mysqli_num_rows($r);

你可能跳过了一封信。尝试:

echo mysqli_num_rows($r);

您使用了错误的函数,它实际上是mysqli_num_rows;您缺少行末尾的s


您使用了错误的函数,它实际上是mysqli_num_rows;您缺少行末尾的s


我认为您需要像下面这样编写代码

$q = "SELECT user_id, first_name FROM users WHERE email='$e' AND pass=SHA1('$p')";
$r =  mysqli_query($dbc, $q); // Run the query.
echo mysqli_num_rows($r);
您只需从@mysqli_查询中删除@sign即可


谢谢

我认为您需要像下面这样编写代码

$q = "SELECT user_id, first_name FROM users WHERE email='$e' AND pass=SHA1('$p')";
$r =  mysqli_query($dbc, $q); // Run the query.
echo mysqli_num_rows($r);
您只需从@mysqli_查询中删除@sign即可


谢谢

你能试试这个吗,你没有在mysqli_num_行中添加s,应该是mysqli_num_行


你能试试这个吗,你没有在mysqli\u num\u行中添加s,应该是mysqli\u num\u行


当您正在学习从准备好的语句开始时,它更容易并且不太容易受到注入攻击。这是一个样本

/* Create a new mysqli object with database connection parameters */
   $mysqli = new mysqli('localhost', 'username', 'password', 'db');

   if(mysqli_connect_errno()) {
      echo "Connection Failed: " . mysqli_connect_errno();
      exit();
   }

   /* Create a prepared statement */
   if($stmt = $mysqli -> prepare("SELECT user_id, first_name FROM users WHERE email=? AND pass=SHA1(?)")) {

      /* Bind parameters
         s - string, b - blob, i - int, etc */
      $stmt -> bind_param("ss", $e, $p);

      /* Execute it */
      $stmt -> execute();

      /* Get num rows */
      $mum_rows = $stmt -> num_rows();

      /* Bind results */
      $stmt -> bind_result($user_id, $first_name);

      /* Fetch the value. You may need to fetch in loop if has more than 1 rows. */
      $stmt -> fetch();

      /* echo the result. */
      echo $user_id, ' = ', $first_name;

      /* Close statement */
      $stmt -> close();
   }

   /* Close connection */
   $mysqli -> close();
注意:错误处理实现留给您。
这是面向对象的风格。如果您不习惯使用面向对象的风格,您也可以使用过程式风格。

当您学习从准备好的语句开始时,它更容易并且不容易受到注入攻击。这是一个样本

/* Create a new mysqli object with database connection parameters */
   $mysqli = new mysqli('localhost', 'username', 'password', 'db');

   if(mysqli_connect_errno()) {
      echo "Connection Failed: " . mysqli_connect_errno();
      exit();
   }

   /* Create a prepared statement */
   if($stmt = $mysqli -> prepare("SELECT user_id, first_name FROM users WHERE email=? AND pass=SHA1(?)")) {

      /* Bind parameters
         s - string, b - blob, i - int, etc */
      $stmt -> bind_param("ss", $e, $p);

      /* Execute it */
      $stmt -> execute();

      /* Get num rows */
      $mum_rows = $stmt -> num_rows();

      /* Bind results */
      $stmt -> bind_result($user_id, $first_name);

      /* Fetch the value. You may need to fetch in loop if has more than 1 rows. */
      $stmt -> fetch();

      /* echo the result. */
      echo $user_id, ' = ', $first_name;

      /* Close statement */
      $stmt -> close();
   }

   /* Close connection */
   $mysqli -> close();
注意:错误处理实现留给您。
这是面向对象的风格。如果您不习惯使用面向对象的风格,也可以使用过程风格。echo$q=从email='$e'和pass=SHA1'$p'的用户中选择用户id、名字;然后直接在phpmyadmin中运行它。然后查看此查询是否运行正常在函数调用前不要使用@,至少在学习时不要使用@。一旦你学会了,你就不会使用它。@将禁止显示您收到的任何错误消息。如果您无法连接,或者查询中出现错误或发生任何其他错误,该怎么办?请执行$q的回显。echo$q=从email='$e'和pass=SHA1'$p'的用户中选择用户id、名字;然后直接在phpmyadmin中运行它。然后查看此查询是否运行正常在函数调用前不要使用@,至少在学习时不要使用@。一旦你学会了,你就不会使用它。@将禁止显示您收到的任何错误消息。如果无法连接,或者查询中出现错误或发生任何其他错误,该怎么办?