我正在使用PDO在PHP上运行UPDATE语句。
这是我的表格:
<form method="post" class="form-style">
<h3>ACTUALIZAR PRODUCTOS</h3>
<div class="form-group">
<label>Codigo del producto a actualizar:</label>
<input type="text" class="form-control" name="code" />
<label>Nombre producto:</label>
<input type="text" class="form-control" name="nombre" />
<label>Marca:</label>
<input type="text" class="form-control" name="marca" />
<label>Descripcion:</label>
<textarea class="form-control" name="desc"></textarea>
</div>
<br />
<button type="submit" class="btn btn-default" name="actualizar">Actualizar Producto</button>
</form>
以下是代码:
<?php
$errores = array();
$nombre = $_POST['nombre'];
$marca = $_POST['marca'];
$descripcion = $_POST['desc'];
$codigo = $_POST['code'];
if(isset($_POST['actualizar'])) {
if(empty($nombre)) {
$nombre = null;
}
if(empty($marca)) {
$marca = null;
}
if(empty($descripcion)) {
$descripcion = null;
}
if(empty($codigo)) {
$codigo = null;
}
$sentencia = $conn_db->prepare("UPDATE productos SET nombre = :nombre, marca = :marca, descripcion = :descripcion WHERE codigo = :codigo");
$sentencia->bindParam(':nombre', $nombre, PDO::PARAM_STR);
$sentencia->bindParam(':marca', $marca, PDO::PARAM_STR);
$sentencia->bindParam(':descripcion', $descripcion, PDO::PARAM_STR);
$sentencia->bindParam(':codigo', $codigo, PDO::PARAM_STR);
$sentencia -> execute();
echo "Producto actualizado con exito.";
exit();
}
?>
问题在于,每当我只想从产品中更改一行时,它会向其他行添加空白。例如,我想只更新&#34; Name&#34;对于产品,我在表单上写了新名称,当我点击提交时,名称在DB中更改,但其他行也设置为空白。
关于如何解决这个问题的任何想法?还在学习PHP。感谢。
答案 0 :(得分:0)
通常的方法是使用现有数据填充表单字段。这将使您的操作实际编辑,因为您可以在描述中修复一个字母,而不是从头开始编写。
因此,在显示表单之前,从数据库中选择相应的行,并使用实际值填充value
属性(不要忘记首先使用htmlspecialchars()
处理它们。)
这种提交方式一切都会更新。