【问题标题】:A non-numeric value encountered in phpphp中遇到的非数字值
【发布时间】:2017-05-22 03:18:37
【问题描述】:

我正在尝试获取文本字段中的数量并将其乘以总价,但我总是收到以下错误,谁能帮助我吗?

警告:遇到非数字值

<table class="table">
   <tr align="center">
        <th>Remove</th>
        <th>Product(S)</th>
        <th>Quantity</th>
        <th>Total Price</th>
   </tr>
   <?php 
       $total = 0;
       global $con; 
       $ip = getIp();
       $sel_price = "SELECT * FROM Cart WHERE IP_Address='$ip'";
       $pricerows = $con->query($sel_price)->fetchall(PDO::FETCH_ASSOC);
       foreach ($con->query($sel_price) as $row_price) {
            $pro_id = $row_price['Product_ID'];
            $pro_price = "SELECT * FROM Products WHERE Product_ID='$pro_id'";
            foreach ($con->query($pro_price) as $row_proprice) {
                 $product_price = array($row_proprice['Price']);
                 $product_title = $row_proprice['Product_Name'];
                 $product_imaage = $row_proprice['Photo'];
                 $single_price = $row_proprice['Price']; 
                 $values = array_sum($product_price);
                 $total += $values;
    ?>  
 <tr align="center">
   <td><input type="checkbox" name="remove[]" value="<?php echo $pro_id; ?>"></td>
   <td><?php echo $product_title; ?><br><img src="images/<?php echo $product_imaage; ?>" width="60" height="60"/></td>  
   <td><input type="text" size="4" id="qty" name="qty" value="<?php echo $_SESSION['qty'];?>"/></td>
<?php

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

    $qty = $_POST['qty'];
    $update_qty = "UPDATE cart set Quantity='$qty'";
    $updaterows = $con->prepare($update_qty);
    $updaterows->execute();

    $_SESSION['qty'] = $qty;

    $total = $total*$qty;   //ERROR APPEARS HERE

 }
?>
<td><?php echo $single_price . " L.E";?></td>
</tr>
</table>

【问题讨论】:

  • 那么$total 分配的位置及其值在哪里? $_SESSION['qty'] 有价值吗?
  • 顺便说一句;您将在不使用 WHERE 子句的情况下更新整个数据库,除非这是您想要的。
  • 我要求澄清两个原因,但没有得到任何回应。接受当时给出的答案;我已经提出问题并投票结束。您要么注销,要么等待具体答案。我不能给你一个,祝你好运。

标签: php


【解决方案1】:

需要将值转换为整数,可以使用

int(your value) 

$total = $total* int($qty); 

我希望这能解决问题。

【讨论】:

  • 当我这样做时,我得到了这个错误Fatal error: Uncaught Error: Call to undefined function int()
  • 然后使用这个 'intval($qty) ' 不带引号
  • 你要做的是 casting(int)$qty,这与 intval($qty) 不完全相同
【解决方案2】:

请不要将未过滤的 $_POST 变量插入到 sql 查询中,始终使用过滤器来防止 sql 注入!

据我所知,您正在尝试将 $total(未初始化)与 $qty 相乘。

请在此计算之前的某处插入$total = 0(或相等的初始化)!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    相关资源
    最近更新 更多