UPDATE语句将空白添加到其他行

时间:2016-02-10 15:28:58

标签: php mysql pdo

我正在使用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。感谢。

1 个答案:

答案 0 :(得分:0)

通常的方法是使用现有数据填充表单字段。这将使您的操作实际编辑,因为您可以在描述中修复一个字母,而不是从头开始编写。

因此,在显示表单之前,从数据库中选择相应的行,并使用实际值填充value属性(不要忘记首先使用htmlspecialchars()处理它们。)

这种提交方式一切都会更新。