Update con MYSQL PHP – php mysql mysqli

Pregunta:


Tengo este código, pero no hace el update, y no sé porque.

<?php
// if ($_POST['accemail'] == "" || $_POST['accname'] == "" || $_POST['accphone'] == ""){
    // header("Location: myaccount.php");
// } else
// {
    include ("db_files/db.php");
    $strSQL = "UPDATE usuarios SET email = '".$_POST['accemail']."', nombre = '".$_POST['accname'] ."' razon_social = '".$_POST['accsocialreason']."', nif = '".$_POST['accnif']."', telefono = '".$_POST['accphone']."', direccion = '".$_POST['accaddress']."', ciudad = '".$_POST['acccity']."', provincia = '".$_POST['accprovince']."', codigo_postal = '".$_POST['acccp']."' pais = '".$_POST['acccountry']."' ";
    echo $strSQL;
    $query = mysqli_query($db, $strSQL);
    if (mysqli_connect_errno()){
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    // }

// }
?>

Me sale este error:

Parse error: syntax error, unexpected end of file in
C:xampphtdocsoneplayer_gitaccupdate.php on line 15

No imprime la variable $strSQL

Preguntado por: Pavlo B.

AntoTGa

Te recomiendo “escapar” los datos recibidos por POST para evitar inyecciones SQL http://php.net/manual/es/security.database.sql-injection.php

Para escapar puedes usar la función real_escape_string(), te dejo un ejemplo:

<?php
 if($_POST['accemail'] == "" || $_POST['accname'] == "" || $_POST['accphone'] == ""){
    header("Location: myaccount.php");
 }else{

    include ("db_files/db.php");

    $post_accemail = mysqli_real_escape_string($db, $_POST['accemail']);
    $post_accname = mysqli_real_escape_string($db, $_POST['accname']);
    $post_accsocialreason = mysqli_real_escape_string($db, $_POST['accsocialreason']);
    $post_accnif = mysqli_real_escape_string($db, $_POST['accnif']);
    $post_accphone = mysqli_real_escape_string($db, $_POST['accphone']);
    $post_accaddress = mysqli_real_escape_string($db, $_POST['accaddress']);
    $post_acccity = mysqli_real_escape_string($db, $_POST['acccity']);
    $post_accprovince = mysqli_real_escape_string($db, $_POST['accprovince']);
    $post_acccp = mysqli_real_escape_string($db, $_POST['acccp']);
    $post_acccountry = mysqli_real_escape_string($db, $_POST['acccountry']);


    $strSQL = "UPDATE usuarios SET email = '$post_accemail', nombre = '$post_accname'...

Al igual que te han comentado que no tienes la cláusula WHERE por lo cual, todos los registros de la tabla usuarios se verán afectados ya que no especificas que registro quieres que se actualize.

Te faltan varias ,, antes de razon_social y antes de pais.:

$strSQL = "UPDATE usuarios SET email = '".$_POST['accemail'].
"', nombre = '".$_POST['accname'] .
"' razon_social = '".$_POST['accsocialreason'].
"', nif = '".$_POST['accnif'].
"', telefono = '".$_POST['accphone'].
"', direccion = '".$_POST['accaddress'].
"', ciudad = '".$_POST['acccity'].
"', provincia = '".$_POST['accprovince'].
"', codigo_postal = '".$_POST['acccp'].
"' pais = '".$_POST['acccountry']."' ";

Por otro lado, no tienes clausula WHERE por lo que estás modificando TODOS los registros de la BBDD. ¿?.

Fuente

Add a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *