0
我正在PHP上使用PDO運行UPDATE語句。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();
}
?>
的問題是,每當我想從產品僅改變第1行,它增加了空白的其他行。例如,我只想更新產品的「名稱」,我在表單上寫新名稱,當我點擊提交時,名稱在數據庫中更改,而其他行也設置爲空。
關於如何解決這個問題的任何想法?仍在學習PHP。謝謝。
你總是在更新一切,無論有什麼需要改變。不要始終綁定所有參數,請檢查並查看是否有要更改的內容,並且只包含更新的字段。 – andrewsi
然後不使用該準備好的語句,你應該創建一個只取決於你需要更新,如果你發送空白參數到其餘的列,它會更新它們像這樣... – jpganz18
但是如果我想改變爲例如,產品的名稱,品牌和描述?我必須爲每一行做一個聲明? –