Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/04/2014, 13:02
Avatar de mati22
mati22
 
Fecha de Ingreso: abril-2014
Mensajes: 10
Antigüedad: 10 años
Puntos: 0
Pregunta Update Mysqli y bind_param error ?

Muy buenas foreros!

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_HOSTDB_USERDB_PASSDB_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_HOSTDB_USERDB_PASSDB_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!