首页 > 解决方案 > 插入的值保持为 0

问题描述

不知道怎么回事,我选了表里的价格,用的时候还好。在中<form>$seller很好$_SESSION['username'],但是buy_item.php当我尝试计算$newAmount = ($row["amount"] - $price);并尝试查看该值时,它似乎$price变成了0$

PAGE.PHP

sql

 $sql = "SELECT seller,price FROM stuff ";

在表中(所有信息都很好)

while($row = $result->fetch_assoc()) {

echo "<tr>";
echo "<td>". $row["price"] . "</td>";
echo "<td>". $row["seller"] . "</td>";
echo " <td><form action='buy_item.php' method='post'>
            <input type='hidden' id='seller' name='seller' value='".$row['seller']."'/>
             <input type='hidden' id='price' name='price' value='".$row['price']."'/>
            <input type='hidden' id='buyer' name='buyer' value='". $_SESSION['username'] ."'/>
             <input type='submit' value='Buy'/>
        </form></td>";
    echo "</tr>";

BUY_ITEM.PHP

<?php
session_start();
$conn = mysqli_connect("hi", "hi", "hi", "hi");
 if ($conn->connect_error) { 
  die("Connection failed: " . $conn->connect_error);
 } 
        $seller = mysqli_real_escape_string($link, $_REQUEST['seller']);
    $price = mysqli_real_escape_string($link, $_REQUEST['price']);
   $buyer = mysqli_real_escape_string($link, $_REQUEST['buyer']);
   $sql = "SELECT username,amount FROM users WHERE username = '" . 
  $_SESSION['username'] . "'";

 $result = $conn->query($sql);
 if ($result->num_rows > 0) {
  while($row = $result->fetch_assoc()) {

   if   ($row["amount"] >= $price)  {
      $newAmount =  ($row["amount"] - $price);
        echo ("$newAmount");

        } 
        else
            {
                                echo "Records added successfully.";
      }
      }
      } else { echo "0 results"; }
    $conn->close();
   ?>

总是出现$newAmount=$amount原因$price总是变成 = 0

标签: phpmysqlsqldatabase

解决方案


我要赌一把,说 $price 里面有一个隐藏的字符或类似的东西。

PHP 练习类型杂耍。PHP 在内部是一种类型化语言,它根据需要转换真实类型。

$_REQUEST 以字符串形式提供 $price 的值。

当你在减法中使用它时,PHP 会将它从字符串转换为整数。演员阵容出了点问题,它看起来不像一个数字,所以 PHP 将其设为零。然后你的结果就会出现。

正如@mr-glass 所建议的那样,使用 var_dump() 将其打印出来将使这一点变得清晰。


推荐阅读