【问题标题】:How to convert mysqli_query result to int?如何将 mysqli_query 结果转换为 int?
【发布时间】:2018-02-09 04:16:16
【问题描述】:

目前我正在开发一个移动图书馆应用程序,该应用程序需要借阅书籍。我希望能够检查与可用总数相比有多少书被签出。我正在努力将mysqli_query 结果转换为一个整数,以便与可用的总书籍数量进行比较。如果这是一个简单的答案(我很新),我深表歉意,因为我做了很多挖掘工作,但找不到适合我的情况的答案。

<?php
require "conn.php";

$userID = "2";
$book_id = "1";

$mysql_qry = "select COUNT(*) from books_checked_out where bookID=$book_id";
$result = mysqli_query($conn, $mysql_qry);

//Somewhere here convert the $result into $quantity, which would be an int

if($quantity >= 2) {
    echo "more books checked out than in stock";
}
else if($quantity < 2) {
    echo "less books checked out than in stock";
}
?>

感谢您的帮助,谢谢!

【问题讨论】:

  • compared to the total available-> 你将从哪里得到total available?

标签: php mysql database mysqli


【解决方案1】:

这会起作用

$result = $result->fetch_array();
$quantity = intval($result[0]);

【讨论】:

    【解决方案2】:

    你可以这样做:

    $userID = "2";
    $book_id = "1";
    
    $mysql_qry = "select COUNT(*) as quantity from books_checked_out where bookID=$book_id";
    $result = mysqli_query($conn, $mysql_qry);
    
    $row = mysqli_fetch_array($result, 'MYSQLI_ASSOC'); // Use something like this to get the result
    $quantity = $row['quantity'];
    
    if($quantity >= 2) {
        echo "more books checked out than in stock";
    }
    else if($quantity < 2) {
        echo "less books checked out than in stock";
    }
    ?>
    

    【讨论】:

    • 但是没有解释为什么在PHP下的mysql查询中,所有数字都转换为字符串。在您的示例中,变量 $quantity 将是一个字符串,它应该是一个整数。要获得整数,必须使用 $quantity = intval($row['quantity']);目前还不清楚为什么。
    【解决方案3】:

    尝试使用 intval("0".$row['quantity']) 这会将您的数量转换为整数。

    【讨论】:

      【解决方案4】:

      这应该可行。请注意 SQL 注入。 另外,我对库存书籍的数据库进行了疯狂的猜测,这将需要更改。

      require "conn.php";
      
      $userID = "2";
      $book_id = "1";
      
      $mysql_qry = "SELECT 
      (SELECT COUNT(*) FROM books_checked_out WHERE bookID='" . $book_id . "') as num1,
      (SELECT COUNT(*) FROM books_in_stock WHERE bookID='" . $book_id . "') as num2";
      $result = mysqli_query($conn, $mysql_qry);
      $quantity = mysqli_fetch_assoc($result);
      
      if($quantity['num1'] >= 2) {
          echo "more books checked out than in stock";
      }
      else {
          echo "less books checked out than in stock";
      }
      //If you want to see the difference you can do something like this.
      
      echo "Checked Out" . $quantity['num1'] . '<br/>';
      echo "In Stock" . $quantity['num2'] . '<br/>';
      

      【讨论】:

      • 我回答了被问到的问题。他们没有问关于 sql 注入的问题。
      • 修复了两个查询并注意到 SQL 注入。如果他想要差异,他将不得不有两个数字。已借出的图书数量和库存图书的数量。 $book_id2 似乎是最好的选择,因为他将第一个数字称为 $book_id1。或者,他可以将图书总数减去已借阅的总数,得到剩余的库存。
      猜你喜欢
      • 1970-01-01
      • 2017-11-25
      • 2023-03-19
      • 1970-01-01
      • 2012-07-05
      • 1970-01-01
      • 2011-06-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多