不能用php更新mysql数据库

时间:2014-10-02 19:54:11

标签: php mysql

我真的不知道它有什么问题,我可以使用类似的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");
?>

2 个答案:

答案 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注入。

<强>链接

  1. MySQLI
  2. Prepared Statements
  3. Binding Parameters
  4. execute()