我真的不知道它有什么问题,我可以使用类似的php生成数据,而另一个几乎完全没有$ categoria = $ _POST [“CAT”]的数据;和$ sql。=“SET catPERS ='$ categoria'”; (里面有一些西班牙语,如果你需要的话就会翻译出来)
<?php
// PROCESO PERSONAS UPD (ACTUALIZACION)
// CONECTAR AL SERVIDOR DE BASE DE DATOS
$conex = mysql_connect("localhost","root","");
// CONTROLAR CONEXION
if (!$conex) {
die("ATENCION!!!.. NO se pudo CONECTAR al SERVIDOR de Bae de Datos");
} // endif
// SELECCIONAR BASE DE DATOS
$selDB = mysql_select_db("database",$conex);
// CONTROLAR SELECCION DE BASE DE DATOS
if (!$selDB) {
die("ATENCION!!!.. NO se pudo SELECCIONAR Base de Datos");
} // endif
// CAPTURAR DATOS DEL FORMULARIO
$id = $_POST["ID"];
$nombre = $_POST["NOM"];
$direccion = $_POST["DIR"];
$telefono = $_POST["TEL"];
$departamento = $_POST["DTO"];
$categoria = $_POST["CAT"];
// CREAR SENTENCIA SQL PARA ACTUALIZACION
$sql = "UPDATE Personas ";
$sql .= "SET nomPERS='$nombre', ";
$sql .= "SET dirPERS='$direccion', ";
$sql .= "SET telPERS='$telefono', ";
$sql .= "SET dtoPERS='$departamento', ";
$sql .= "SET catPERS='$categoria' ";
$sql .= "WHERE idPERS=$id";
// die($sql);
// EJECUTAR SENTENCIA SQL
mysql_query($sql,$conex);
// CERRAR CONEXION
mysql_close($conex);
// VOLVER AUTOMATICAMENTE AL FORMULARIO DE ACTUALIZACIÓN (REDIRIGIR)
header("Location: productos.html");
?>
答案 0 :(得分:3)
在更新查询中更新多个值时,只需要一个 SET
关键字,并用逗号分隔其他值。
答案 1 :(得分:1)
使用mysql_
因为它目前已被弃用,这是一个坏主意。此外,您的查询字符串易受SQL注入攻击。是时候加强你的游戏,圣地亚哥。
$mysqli = new mysqli('localhost', 'user', 'pass', 'database');
if($stmt = $mysqli->prepare("update Personas set nomPERS = ?, dirPERS = ?, telPERS = ?, dtoPERS = ?, catPERS = ?, where idPERS = ?")):
$stmt->bind_param('sssssi', $_POST['ID'], $_POST['NOM'], $_POST['DIR'], $_POST['TEL'], $_POST['DTO'], $_POST['CAT'], $id);
if($stmt->execute()):
$stmt->close();
header("Location: productos.html");
endif;
endif;
这是安全方式。它还将解决您(当前)损坏的SQL查询的问题。
通过在mysqli中使用预处理语句,我们可以避免在当前代码中使用SQL注入。
<强>链接强>