$_POST 给出了不正确的 HTML 输入字段值
$_POST gives incorrect HTML input field value
我对这段代码很生气。谁能解释一下问题出在哪里?
我有这个 HTML 表格:
<form action="item_add.php" method="POST" id="formadd">
SKU: <input type="text" name="sku" id="form2"><br/>
Name: <input type="text" name="name" id="form2"><br/>
Price: <input type="text" name="price" id="form2"><br/>
Type: <select name="type" id="form2">
<option value="1">DVD-Disc</option>
<option value="2">Book</option>
<option value="3">Furniture</option>
</select>
</form>
这个简单的代码用于检查是否一切正常,因为我是新手:
if ($_SERVER['REQUEST_METHOD'] == 'POST'){//&&( isset( $_POST['submit1'] )){
$item = new c_item;
$item->$sku = mysqli_real_escape_string($link, $_POST['sku']);
$item->$name = mysqli_real_escape_string($link, $_POST['name']);
$item->$price = floatval(mysqli_real_escape_string($link, $_POST['price']));
$item->$type = intval(mysqli_real_escape_string($link, $_POST['type']));
echo "sku: ".$item->$sku."<br/>";
echo "name: ".$item->$name."<br/>";
echo "price: ".$item->$price."<br/>";
echo "type: ".$item->$type."<br/>";
}
问题是它输出我:
sku:名称
姓名:姓名
价格:2
类型:2
插入 sku 和价格时会有所不同。
因为您没有粘贴完整代码,所以这只是假设
echo "sku: ".$item->$sku."<br/>";
echo "name: ".$item->$name."<br/>";
echo "price: ".$item->$price."<br/>";
echo "type: ".$item->$type."<br/>";
在那里你执行变量的动态名称所以$name,可以与$sku相同,$price可以与$type相同
我不知道你的 c_item 但你可能想做的是在此 class 或类似的
中声明
class c_item
{
public $name;
public $price,
public $sku;
public $type;
}
然后在您的代码中,您需要使用 $
动态访问属性
$item = new c_item;
$item->sku = mysqli_real_escape_string($link, $_POST['sku']);
$item->name = mysqli_real_escape_string($link, $_POST['name']);
$item->price = floatval(mysqli_real_escape_string($link, $_POST['price']));
$item->type = intval(mysqli_real_escape_string($link, $_POST['type']));
echo "sku: ".$item->sku."<br/>";
echo "name: ".$item->name."<br/>";
echo "price: ".$item->price."<br/>";
echo "type: ".$item->type."<br/>";
注意 属性 对象名称中缺少 $
我对这段代码很生气。谁能解释一下问题出在哪里?
我有这个 HTML 表格:
<form action="item_add.php" method="POST" id="formadd">
SKU: <input type="text" name="sku" id="form2"><br/>
Name: <input type="text" name="name" id="form2"><br/>
Price: <input type="text" name="price" id="form2"><br/>
Type: <select name="type" id="form2">
<option value="1">DVD-Disc</option>
<option value="2">Book</option>
<option value="3">Furniture</option>
</select>
</form>
这个简单的代码用于检查是否一切正常,因为我是新手:
if ($_SERVER['REQUEST_METHOD'] == 'POST'){//&&( isset( $_POST['submit1'] )){
$item = new c_item;
$item->$sku = mysqli_real_escape_string($link, $_POST['sku']);
$item->$name = mysqli_real_escape_string($link, $_POST['name']);
$item->$price = floatval(mysqli_real_escape_string($link, $_POST['price']));
$item->$type = intval(mysqli_real_escape_string($link, $_POST['type']));
echo "sku: ".$item->$sku."<br/>";
echo "name: ".$item->$name."<br/>";
echo "price: ".$item->$price."<br/>";
echo "type: ".$item->$type."<br/>";
}
问题是它输出我:
sku:名称
姓名:姓名
价格:2
类型:2
插入 sku 和价格时会有所不同。
因为您没有粘贴完整代码,所以这只是假设
echo "sku: ".$item->$sku."<br/>";
echo "name: ".$item->$name."<br/>";
echo "price: ".$item->$price."<br/>";
echo "type: ".$item->$type."<br/>";
在那里你执行变量的动态名称所以$name,可以与$sku相同,$price可以与$type相同
我不知道你的 c_item 但你可能想做的是在此 class 或类似的
中声明class c_item
{
public $name;
public $price,
public $sku;
public $type;
}
然后在您的代码中,您需要使用 $
动态访问属性 $item = new c_item;
$item->sku = mysqli_real_escape_string($link, $_POST['sku']);
$item->name = mysqli_real_escape_string($link, $_POST['name']);
$item->price = floatval(mysqli_real_escape_string($link, $_POST['price']));
$item->type = intval(mysqli_real_escape_string($link, $_POST['type']));
echo "sku: ".$item->sku."<br/>";
echo "name: ".$item->name."<br/>";
echo "price: ".$item->price."<br/>";
echo "type: ".$item->type."<br/>";
注意 属性 对象名称中缺少 $