-3

我在使用以下代码时遇到问题:

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,所以这可能是一个菜鸟错误。

4

2 回答 2

2

使用来自 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';}

}
于 2013-06-17T11:18:30.160 回答
0

您的代码的第一部分不会将 sql 查询字符串传递给 sql 引擎。如果您使用 PDO( Php 数据对象),以下是如何完成的

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
于 2013-06-16T17:13:53.810 回答