【发布时间】:2019-04-28 08:41:42
【问题描述】:
所以我有这段代码,它基本上是用来更新记录的。它填充一个表单,用户进行更改(或不进行更改)单击更新,然后运行此代码。我已经设法让这一切正常工作,但是模型字段 KEEPS 用“0”替换了那里的任何内容。因此,如果用户单击更新时模型框包含“福特”,则模型字段将等于“0”,我不知道为什么。
if (isset($_POST['update'])) {
//Run the UPDATE code right here please!!!
$vID2 = $_POST['hiddenVehicleID'];
$model2 = $_POST['model'];
$varient2 = $_POST['varient'];
$stockno2 = $_POST['stockno'];
$vinNo2 = $_POST['vinNo'];
$trans2 = $_POST['transmission'];
$cc2 = $_POST['cc'];
$colour2 = $_POST['colour'];
$delivery2 = $_POST['delivery'];
if (empty($_POSt['stock'])) {
$stock2 = "N/A";
}
$stock2 = $_POST['stock'];
$status2 = $_POST['status'];
$customer2 = $_POST['customer'];
if (empty($_POST['tax'])) {
$tax2 = "N/A";
}
$tax2 = $_POST['tax'];
$financeS2 = $_POST['financeSettlement'];
$finance2 = $_POST['finance'];
$comments2 = $_POST['comments'];
$orderNo2 = $_POST['orderNo'];
$editedBy2 = $user_id;
$dateAdded2 = $_POST['hiddenUpdate'];
$lastUpdated2 = date("m/d/y");
$progress2 = $_POST['progress'];
$sth = $salesConn->prepare('
UPDATE `vehicleOrderForm` SET
`model` = :veh_model,
`varient` = :veh_varient,
`stockno` = :veh_stockno,
`vinNo` = :veh_vinNo,
`transmission` = :veh_trans,
`cc` = :veh_cc,
`colour` = :veh_colour,
`delivery` = :veh_delivery,
`stock` = :veh_stock,
`status` = :veh_status,
`customer` = :veh_customer,
`tax` = :veh_tax,
`financeSettlement` = :veh_settlement,
`finance` = :veh_finance,
`comments` =:veh_comments,
`orderNo` = :veh_orderNo,
`editedBy` = :veh_edited,
`dateAdded` = :veh_added,
`lastUpdated` = :veh_updated,
`progress` = :veh_progress
WHERE `vehicleOrderForm`.`id` = :vID; ');
$sth->bindValue(':vID', $vID, PDO::PARAM_INT);
$sth->bindValue(':veh_model', $model2, PDO::PARAM_INT);
$sth->bindValue(':veh_varient', $varient2, PDO::PARAM_STR);
$sth->bindValue(':veh_stockno', $stockno2, PDO::PARAM_STR);
$sth->bindValue(':veh_vinNo', $vinNo2, PDO::PARAM_STR);
$sth->bindValue(':veh_trans', $trans2, PDO::PARAM_STR);
$sth->bindValue(':veh_cc', $cc2, PDO::PARAM_STR);
$sth->bindValue(':veh_colour', $colour2, PDO::PARAM_STR);
$sth->bindValue(':veh_delivery', $delivery2, PDO::PARAM_STR);
$sth->bindValue(':veh_stock', $stock2, PDO::PARAM_STR);
$sth->bindValue(':veh_status', $status2, PDO::PARAM_STR);
$sth->bindValue(':veh_customer', $customer2, PDO::PARAM_STR);
$sth->bindValue(':veh_tax', $tax2, PDO::PARAM_STR);
$sth->bindValue(':veh_settlement', $financeS2, PDO::PARAM_STR);
$sth->bindValue(':veh_finance', $finance2, PDO::PARAM_STR);
$sth->bindValue(':veh_comments', $comments2, PDO::PARAM_STR);
$sth->bindValue(':veh_orderNo', $orderNo2, PDO::PARAM_STR);
$sth->bindValue(':veh_edited', $editedBy2, PDO::PARAM_STR);
$sth->bindValue(':veh_added', $dateAdded2, PDO::PARAM_STR);
$sth->bindValue(':veh_updated', $lastUpdated2, PDO::PARAM_STR);
$sth->bindValue(':veh_progress', $progress2, PDO::PARAM_STR);
$sth->execute();
它没有发布任何错误,其他一切正常。我不知道为什么它不能正确发布,我在页面顶部打开了错误报告并且它没有发布任何错误。它的行为就像它正常运行一样。
这就是我表单的模型部分的外观。我使用开关是因为我希望已经在下拉菜单中选择了该选项,以便用户知道汽车当前设置的型号。
<?php
switch ($model) {
case '3':
?>
<div class="c">
<label for="vehicleModel">Vehicle Model:</label>
<select name="model" id="vehicleModel">
<option value="N/A">Please Select</option>
<option selected value="3">3</option>
<option value="ZS">ZS</option>
<option value="GS">GS</option>
</select>
</div>
<?php
break;
case 'ZS':
?>
<div class="c">
<label for="vehicleModel">Vehicle Model:</label>
<select name="model" id="vehicleModel">
<option value="N/A">Please Select</option>
<option value="3">3</option>
<option selected value="ZS">ZS</option>
<option value="GS">GS</option>
</select>
</div>
<?php
break;
case 'GS':
?>
<div class="c">
<label for="vehicleModel">Vehicle Model:</label>
<select name="model" id="vehicleModel">
<option value="N/A">Please Select</option>
<option value="3">3</option>
<option value="ZS">ZS</option>
<option selected value="GS">GS</option>
</select>
</div>
<?php
break;
default:
?>
<div class="c">
<label for="vehicleModel">Vehicle Model:</label>
<select name="model" id="vehicleModel">
<option selected value="N/A">Please Select</option>
<option value="3">3</option>
<option value="ZS">ZS</option>
<option value="GS">GS</option>
</select>
</div>
<?php
break;
}
?>
【问题讨论】:
-
仅供参考,如果您在每个选项上打印
selected之前检查$model的值,第二个脚本实际上可以简化为原来的 1/4 -
另外,在您的开发者工具/控制台日志/var_dump($_POST) 中,您是否看到提交的所有参数都经过了?
-
$sth->bindValue(':veh_model', $model2, PDO::PARAM_INT); -
通常,当您像@aynber 提到的那样绑定错误或您的 db 列是 int 并且您正在传递字符串时,就会发生这种情况。
-
感谢你们的帮助,我一定是出于某种愚蠢的原因复制了 ID 行! @FedericoklezCulloca 我将如何减少我正在使用的代码量?我目前检查 $model 是什么,如果它等于“ZS”,我使用某个代码。我认为切换是最好的方法,但我全神贯注,因为它需要 AGES!