La función de fila PHP mySQL Update no funciona como se esperaba - SQL

La función de fila PHP mySQL Update no funciona como se esperaba - SQLSTATE[42000]: error de sintaxis o infracción de acceso: 1064

Mis disculpas, sé que hay varias preguntas similares, pero no pude encontrar una que se refiriera a la mía lo suficientemente cerca. Tengo un formulario de edición y actualización que obtiene las entradas de la fila seleccionada y funciona bien. Sin embargo, cuando intento llamar a la función de actualización, no funciona, pero me devuelve varios errores dependiendo de cómo intente solucionarlo. La versión actual arroja el código de error anterior y más específico se refiere al código SQL en el que no puedo ver nada malo:

SQLSTATE[42000]: Error de sintaxis o infracción de acceso: 1064 Tiene un error en su sintaxis SQL; consulte el manual que corresponda a su Versión del servidor MariaDB para la sintaxis correcta para usar cerca '(event_name='test', event_description='test', event_cate' en la línea 2

Según lo anterior, aparentemente las variables se transmiten según lo previsto, pero el evento no se actualiza. He intentado tanto pasar el event_id como no hacerlo, el event_id es incremental automático y no se actualizará, además hay un user_id_fk que supongo que no sería relevante aquí. Mi función createevent es más o menos la misma y funciona. ¿Necesito pasar una matriz para actualizar una fila existente?

Mi página php:

if(isset($_POST['update']))
    {
    $eventid=($_POST['eventid']);
    $eventname=strip_tags($_POST['eventname']);
    $eventdescription=strip_tags($_POST['eventdescription']);
    $eventcategory=strip_tags($_POST['eventcategory']);
    $eventdate = $_POST["eventdate"];
    $sqlDate = date("Y-m-d",strtotime($eventdate));
    $eventvenue=strip_tags($_POST['eventvenue']);
    $eventlocation=strip_tags($_POST['eventlocation']);


    if($eventname=="") {
      $error[] = "provide eventname !";
    }  
    if($eventcategory=="") {
      $error[] = "provide eventcategory !";
    }
    if($eventdescription=="") {
      $error[] = "provide eventdescription !"; 
    }
    if($eventlocation=="") {
      $error[] = "provide eventlocation !";
    }
    else if($eventdate=="") {
      $error[] = "provide a date !";
    }
    else if($eventvenue=="") {
      $error[] = "provide eventvenue !";
    }


   else
    {

        if($event->updateevent($eventid,$eventname,$eventdescription,$eventcategory,$eventdate,$eventvenue,$eventlocation)) 
            {
                $event->redirect('members.php');
                echo "Your event has been successfully updated.";
            }

    }

    }

El formulario html referido:

    <div id="updateevent">
    <form action="" method="POST">
        <input type='hidden' name="eventid" required="required" value="<?php echo $row['event_id']; ?>">
        <label>Event title: </label>
        <input type="text" name="eventname" required="required" value="<?php echo $row['event_name']; ?>"/><br /><br />
        <label>Description: </label>
        <input type="text" name="eventdescription" required="required" value="<?php echo $row['event_description']; ?>"/><br /><br />
        <label>Category: </label>
        <input type="text" name="eventcategory" required="required" value="<?php echo $row['event_category']; ?>"/><br /><br />
        <label>Venue: </label>
        <input type="text" name="eventvenue" required="required" value="<?php echo $row['event_venue']; ?>"/><br /><br />
        <label>Event date: </label>
        <input type="date" name="eventdate" required="required" value="<?php echo $row['event_date']; ?>"/><br /><br />
        <label>Event location: </label>
        <input type="text" name="eventlocation" required="required" value="<?php echo $row['event_location']; ?>"/><br /><br />
        <input type="submit" class="button" name="update" value="Update" /></form>
    </form>
    </div>

La función llamada en mi clase events.php:

public function updateevent($event_id,$event_name,$event_description,$event_category,$event_date,$event_venue,$event_location)
{
   try
   {

       $stmt = $this->conn->prepare("UPDATE events 
                                    SET event_name=:eventname, //UPDATED
                                        event_description=:eventdescription,
                                        event_category=:eventcategory,
                                        event_date=:sqldate,
                                        event_venue=:eventvenue,
                                        event_location=:eventlocation
                                    WHERE event_id=:eventid");

       $stmt->bindparam(":eventid", $event_id);
       $stmt->bindparam(":eventname", $event_name);
       $stmt->bindparam(":eventdescription", $event_description);
       $stmt->bindparam(":eventcategory", $event_category);
       $stmt->bindparam(":sqldate", $event_date);
       $stmt->bindparam(":eventvenue", $event_venue);
       $stmt->bindparam(":eventlocation", $event_location);

       $stmt->execute(); 

       return $stmt; 
   }
   catch(PDOException $e)
   {
       echo $e->getMessage();
   }    
}

Gracias por cualquier ayuda con esto

**

ACTUALIZAR: al eliminar los corchetes dentro de la instrucción ACTUALIZAR obtengo no se devolvió el error, pero la fila aún no se está actualizando.

**

Mostrar la mejor respuesta

La cláusula set no tiene paréntesis. Simplemente elimínelos y debería estar bien:

$stmt = $this->conn->prepare("UPDATE events 
                             SET event_name=:eventname,
                                 event_description=:eventdescription,
                                 event_category=:eventcategory,
                                 event_date=:sqldate,
                                 event_venue=:eventvenue,
                                 event_location=:eventlocation
                             WHERE event_id=:eventid");

Gracias @Mureinik, ahora no arroja ningún error pero tampoco actualiza la fila. ¿Algunas ideas?

Intente eliminar ( y ):

UPDATE events 
                                    SET event_name=:eventname,
                                        event_description=:eventdescription,
                                        event_category=:eventcategory,
                                        event_date=:sqldate,
                                        event_venue=:eventvenue,
                                        event_location=:eventlocation
                                    WHERE event_id=:eventid

SET no tiene ( y ): https://dev.mysql.com/doc/refman/5.7/en/update.html

Gracias @AndrewShmig, ahora no arroja ningún error pero tampoco actualiza la fila. ¿Algunas ideas?

¿Tiene alguna fila que coincida con la cláusula UPDATE + WHERE? Muéstranos los resultados de SELECT.

Cuando se recuperan los eventos para un usuario que ha iniciado sesión, uso $stmt = $event->runQuery("SELECT event_id, event_name, event_description, event_category, event_venue, event_location FROM events WHERE user_id_fk=$userid"); $sentencia->ejecutar(); $sentencia->setFetchMode(PDO::FETCH_ASSOC); Esto está dando el resultado correcto: user_id_fk se refiere aquí al ID de usuario que se toma del valor de la sesión de inicio de sesión. Runquery también está predefinido en el archivo de clase: public function runQuery($sql) { $stmt = $this->conn->prepare($sql); devolver $sentencia; }

@Yo_42, en su cláusula UPDATE está usando un campo event_id, pero en su SELECT - algún otro... necesitamos saber/comprobar si el event_id = :eventid realmente existe antes de que se ejecute UPDATE. Intente seleccionar datos antes de una actualización y vea si hay algún resultado que coincida con event_id = :eventid.

al hacerlo obtengo: Aviso: Índice indefinido: event_id en C:\xampp\htdocs\HTML\php\editevent.php en la línea 133 SQLSTATE[HY093]: Número de parámetro no válido: el número de variables vinculadas no coincide con el número de tokens / / Esto debería ser porque desvinculé la variable restante en la función. La línea 133 hace referencia al formulario: ¿Podría el problema ser causado por ¿El tipo de entrada está oculto?

me empujó en la dirección correcta aquí, esencialmente todos los parámetros se pasaron de la lista de eventos por página de usuario, excepto event_id, que por lo tanto estaba vacío. ¡Muchas gracias por tu ayuda!