【问题标题】:PHP comparing int from database with POST[int] [closed]PHP将数据库中的int与POST [int]进行比较[关闭]
【发布时间】:2013-06-16 16:42:27
【问题描述】:

以下代码有问题:

if(isset($_POST['submit'])){

$name = $_POST['productname'];
$sql= "SELECT quantity FROM products WHERE productid='$name'";
$amount= $sql + 0;
$quantitysold = $_POST['quantitysold']; 
$amountsold = $quantitysold + 0;
var_dump($amountsold);
var_dump($amount);

if($amountsold > $amount){
    echo 'Not enough product';}

else if($name && $quantitysold){
    $query = $db->query("UPDATE products SET quantity=quantity-$quantitysold
    WHERE productid='$name'");
    $query = $db->query("DELETE FROM products WHERE quantity<'1'");} 

else{
    echo 'Incomplete Data';}

}

问题是 sql 被读取为字符串,而不是我希望将其重定向到的整数。这意味着我无法比较 $amount 和 $quantitysold。

我最近开始学习 PHP,所以这可能是一个新手错误。

【问题讨论】:

  • 您需要将 $sql 字符串输入到函数中,例如 $result = $connection->query($sql);但这远不是一个完整的答案,因为您需要一堆其他行来创建与您的 sql 服务器的连接并从结果中提取数据。做一些关于'PDO mysql'的教程(google 'pdo mysql tutorial')
  • 您是否阅读过 任何 教程以了解如何做到这一点,或者您是否刚刚开始编码?你从哪里知道这会起作用:$sql= "SELECT quantity FROM products WHERE productid='$name'"; $amount= $sql + 0;

标签: php mysql post compare int


【解决方案1】:

使用来自 php 函数的过滤器输入

   if(isset($_POST['submit'])){

$name = filter_input(INPUT_POST, "productname",FILTER_SANITIZE_NUMBER_INT);
$sql= "SELECT quantity FROM products WHERE productid=$name";
$amount= $sql + 0;
$quantitysold = $_POST['quantitysold']; 
$amountsold = $quantitysold + 0;
var_dump($amountsold);
var_dump($amount);

if($amountsold > $amount){
    echo 'Not enough product';}

else if($name && $quantitysold){
    $query = $db->query("UPDATE products SET quantity=quantity-$quantitysold
    WHERE productid=$name");
    $query = $db->query("DELETE FROM products WHERE quantity<'1'");} 

else{
    echo 'Incomplete Data';}

}

【讨论】:

    【解决方案2】:

    代码的第一部分没有将 sql 查询字符串传递给 sql 引擎。以下是如果您使用 PDO (Php Data Objects) 会如何完成

    if(isset($_POST['submit'])){
    
        $db = new PDO("mysql:host=localhost;dbname=yourdatabasename","yourusername","yourpassword");
        $name = $_POST['productname'];
        $sql= "SELECT quantity FROM products WHERE productid=?";
        $statement = $db->prepare($sql);
        $statement->execute(array($name));
        $row = $statement->fetch(PDO::FETCH_NUM);
        $amount= $row[0];
    
    // the rest of your code
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      • 2020-08-28
      • 2018-10-04
      • 1970-01-01
      相关资源
      最近更新 更多