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