这就是我的输入表格:
<tr>
<td class="standard_text_bold" width="25%">First name:</td>
<td class="standard_text_bold" width="25%"><input type="text" name="FirstName" value="<?echo $Name;?>" <?php if ($Status != "New customer") { echo "disabled"; } ?>></td>
</tr>
<tr>
<td class="standard_text_bold" width="25%">Last name:</td>
<td class="standard_text_bold" width="25%"><input type="text" name="LastName" value="<?echo $Lastname;?>" <?php if ($Status != "New customer") { echo "disabled"; } ?>></td>
</tr>
<tr>
<td class="standard_text_bold" width="25%">Email:</td>
<td class="standard_text_bold" width="25%"><input type="text" name="Email" value="<?echo $Email;?>" <?php if ($Status != "New customer") { echo "disabled"; } ?>></td>
</tr>
它非常通用,在特定情况下,几乎所有输入都将被禁用。
我将所有输入定义为
$LastName = $_POST['LastName'];
$FirstName = $_POST['FirstName'];
我运行更新查询
mysql_query("
UPDATE data SET
FirstName = '$FirstName',
LastName = '$LastName',
ProductName = '$Productname',
ProductPriceUSD = '$Productpriceusd',
ProductPriceEUR = '$Productpriceeur',
ProductLink = '$Productlink',
Status = '$Newstatus',
Modified = now()
WHERE ID = '$id'
") or die(mysql_error());
现在我想更新那些非空的值。由于这是一般查询,是否可以验证查询本身内的变量?
我尝过这样的话:
if (empty($_POST['LastName'])) {
$LastName = $row['LastName'];
}
if (!empty($_POST['LastName'])) {
$LastName = $_POST['LastName'];
}
但由于某种原因它不起作用。有什么建议吗?
答案 0 :(得分:2)
您可以通过在php中构建查询来只执行正确的set语句来完成此操作。
您也可以在SQL中执行此操作:
UPDATE data
SET FirstName = (case when '$FirstName' = '' then FirstName else '$FirstName' end),
LastName = (case when '$LastName' = '' then LastName else '$LastName' end),
ProductName = (case when '$Productname' = '' then ProductName else '$ProductName' end),
ProductPriceUSD = (case when '$Productpriceusd' = '' then Productpriceusd else '$Productpriceusd' end),
ProductPriceEUR = (case when '$Productpriceeur' = '' then Productpriceeur else '$Productpriceeur' end),
ProductLink = (case when '$Productlink' = '' then Productlink else '$Productlink' end),
Status = (case when '$Newstatus' = '' then Status else '$NewStatus' end),
Modified = now()
WHERE ID = '$id';
答案 1 :(得分:0)
添加表单验证。如果“名字”字段为空文本,则应显示错误消息并告诉用户再次填写表单。
这涵盖了我创造的每1000种表格中的999种。对于极少数情况,我有一个仅由字段组成的表单...然后我添加一个<input type="hidden">
字段并在PHP中检查它。如果不存在,我知道没有提交任何内容。
答案 2 :(得分:0)
将您的查询修改为以下内容:
$query="UPDATE data SET";
if (!empty($_POST['FirstName']))
{
$query.=' FirstName="' . mysql_real_escape_string($_POST['FirstName'] . '",');
}
if (!empty($_POST['LastName']))
{
$query.=' LastName="' . mysql_real_escape_string($_POST['LastName'] . '",');
}
$query.="Modified = now() WHERE ID = '$id'";
mysql_query($query) or die(mysql_error());
只有在查询字段为空时才附加字段。 此外,您可能希望切换到mysqli或PDO,因为不推荐使用mysql_ *函数。