Os vuelvo a solicitar ayuda, esta vez me surge un problema con bind_param al hacer un update en la base de datos.
(Aclaro que ya intente absolutamente todo lo que se me ocurrió y vi por internet, llevo dos días sin poder solucionar el error y quizá sea una simple novatada.)
Lo que necesito hacer:
Tengo una base de datos la cual contiene, entre otras columnas, la columna "Estado" con el valor "abierto" y la columna "ID" con el identificador de la operación.
Y básicamente, la función que necesito lograr es la siguiente:
Si el usuario hace click en cerrar en la operación con su ID correspondiente, se cambia el valor de "Estado = Abierto" en la db por "Estado = Cerrado".
En teoría, nada complejo de realizar (?)
Bien, el código preparado es el siguiente (debo aclarar que tome como base un código ya preparado de killersites y lo modifique a mis necesidades).
Formulario donde se encuentra la tabla con las operaciones realizadas y el boton "edit".
----------------------------------------------------------------------------------
Código PHP:
<?php
$user_id = $_SESSION['user_id'];
$con=mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
if ($result = mysqli_query($con,"SELECT * FROM `operaciones` WHERE user_id = '$user_id'")){
// display records if there are records to display
if ($result->num_rows > 0)
{
// display records in a table
echo "<table border='1' cellpadding='10'>";
// set table headers
echo "<tr><th>ID</th><th>Simbolo</th><th>Tipo</th><th>Cotizacion de apertura</th><th>Fecha</th><th>Estado</th><th>Opciones</th></tr>";
while ($row = $result->fetch_object())
{
// set up a row for each record
echo "<tr>";
echo "<td>" . $row->ID . "</td>";
echo "<td>" . $row->Simbolo . "</td>";
echo "<td>" . $row->Tipo . "</td>";
echo "<td>" . $row->Cotizacion . "</td>";
echo "<td>" . $row->Fecha . "</td>";
echo "<td>" . $row->Estado ."</td>";
echo "<td><a href='classes/records.php?id=" . $row->ID . "'>Edit</a></td>";
echo "</tr>";
}
echo "</table>";
}
// if there are no records in the database, display an alert message
else
{
echo "No results to display!";
}
}
// show an error if there is an issue with the database query
else
{
echo "Error: " . $con->error;
}
?>
Código para cerrar las operaciones cuando el usuario hace click en "edit"
----------------------------------------------------------------------------------
Código PHP:
<?php
// conectando a db
include('db.php');
// confirmando la variable ID
if (isset($_GET['id']) && is_numeric($_GET['id']))
{
// obteniendo la variable ID desde la url
$id = $_GET['id'];
// Conexion a db
$con=mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);
// Actualizando el registro de la db
if ($stmt = $con->prepare("UPDATE * FROM `operaciones` SET `Estado` = 'cerrado' WHERE `ID` = ? "))
{
$stmt->bind_param("i", $id);
$stmt->execute();
$stmt->close();
}
else
{
echo "ERROR: could not prepare SQL statement.";
}
$mysqli->close();
// redireccionar si la operacion fue satisfactoria
header("Location: view.php");
}
else
// si la variable ID no esta, redireccionar
{
header("Location: view.php");
}
?>
He intentado de todo, cambiando los parametros de la sentencia sql, los parametros de bind, etc. Y no logro conseguir que funcione.
Me arroja el error could not prepare SQL statement.
Ahora, mi pregunta es: hay alguna forma más practica de realizar esta operacion o en que falla el código?
Desde ya, os agradezco vuestro tiempo.
Un saludo!