Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

¿Cual es el error de esta actualización en mysql?

Estas en el tema de ¿Cual es el error de esta actualización en mysql? en el foro de Bases de Datos General en Foros del Web. Estoy tratando de actualizar información en una base de datos, pero me tira el siguiente error. Database query failedYou have an error in your SQL ...
  #1 (permalink)  
Antiguo 28/07/2010, 12:24
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
¿Cual es el error de esta actualización en mysql?

Estoy tratando de actualizar información en una base de datos, pero me tira el siguiente error.

Database query failedYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 1' at line 1

Este es el código que tengo:

Código PHP:
$query "UPDATE subjects SET
                        menu_name = '{$menu_name}', 
                        position = {$position},
                        visible = {$visible}
                      WHERE id = {$id}"
;
            
$result mysql_query($query$connection); 
  #2 (permalink)  
Antiguo 28/07/2010, 12:53
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: ¿Cual es el error de esta actualización en mysql?

El error dice que cerca a la clausula limit 1.
Creo que estasd posteando la sentencia equivocada.

PD: Esos {} para que son? esa n es la forma correcta de asignar valores a las variables.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 28/07/2010, 18:31
 
Fecha de Ingreso: febrero-2008
Mensajes: 578
Antigüedad: 16 años, 2 meses
Puntos: 3
Respuesta: ¿Cual es el error de esta actualización en mysql?

Hay errores en la actualización.
La manera correcta de hacerlo es:

$query = "UPDATE subjects SET menu_name = '$menu_name', position = '$position', visible = '$visible' WHERE id = '$id'"

Las llaves estaban demás.

Suerte
  #4 (permalink)  
Antiguo 28/07/2010, 21:02
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Cual es el error de esta actualización en mysql?

Ah muchas gracias
  #5 (permalink)  
Antiguo 04/08/2010, 11:53
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Cual es el error de esta actualización en mysql?

No, me sigue sin funcionar y tirando el mismo error. Ya le quité las llaves y puse el ejempolo de Jamati y nada.

Ya revisé en el phpmyadmin que concordara con la tabla y todo está bien al parecer.
  #6 (permalink)  
Antiguo 04/08/2010, 12:22
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: ¿Cual es el error de esta actualización en mysql?

Cita:
Iniciado por huesos52 Ver Mensaje
El error dice que cerca a la clausula limit 1.
Creo que estasd posteando la sentencia equivocada.

PD: Esos {} para que son? esa n es la forma correcta de asignar valores a las variables.
Estas revisando la sentencia equivocada. Que sentencia tienes con la clausula limit?
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #7 (permalink)  
Antiguo 05/08/2010, 19:46
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Cual es el error de esta actualización en mysql?

Una duda ¿Cual es la clausula limit?
  #8 (permalink)  
Antiguo 05/08/2010, 22:03
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: ¿Cual es el error de esta actualización en mysql?

Dices que tu error es
Cita:
server version for the right syntax to use near 'LIMIT 1' at line 1

En esa pagina, debes estar utilizando esto. La pregunta te la hago yo a ti, no tu a mi. jajaja
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 06/08/2010, 10:29
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Cual es el error de esta actualización en mysql?

Tengo estas funciones a las cuales llamo por medio de un include. Aquí veo que se encuentra el famoso "LIMIT", porque lo quito y desaparece la palabra de la sentencia esta. Algo tendrán que ver estas funciones me imagino:
Código PHP:
function get_subject_by_id($subject_id) {
    global 
$connection;
    
$query "SELECT * ";
    
$query.= "FROM SUBJECTS ";
    
$query.= "WHERE ID = " $subject_id ." ";
    
$query.= "LIMIT 1 ";
    
$result_set mysql_query($query$connection);
    
confirm_query($result_set);
    
// REMEMBER
    // if no rows are returned, fetch array return false.
    
if ($subject mysql_fetch_array($result_set)) {
        return 
$subject;
    } else {
        return 
NULL;
    }
}

function 
get_page_by_id($subject_id) {
    global 
$connection;
    
$query "SELECT * ";
    
$query.= "FROM PAGES ";
    
$query.= "WHERE ID = " $subject_id " ";
    
$query.="LIMIT 1 ";
    
$result_set mysql_query($query$connection);
    
confirm_query($result_set);
    
// REMEMBER
    // if no rows are returned, fetch array return false.
    
if ($subject mysql_fetch_array($result_set)) {
        return 
$subject;
    } else {
        return 
NULL;
    }

  #10 (permalink)  
Antiguo 08/08/2010, 11:19
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Cual es el error de esta actualización en mysql?

¿Alguien sabe?
  #11 (permalink)  
Antiguo 08/08/2010, 11:26
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: ¿Cual es el error de esta actualización en mysql?

Eso parece ser problema de php.

Haz una impresion de la variable $query y pon el resultado de la impresión directamente en mysql.
Postea dicha impresion y dinos el error que te saca.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #12 (permalink)  
Antiguo 10/08/2010, 10:02
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Cual es el error de esta actualización en mysql?

¿Como puedo imprimir la variable $query si está dentro de una función?
  #13 (permalink)  
Antiguo 10/08/2010, 10:19
Avatar de bNd170  
Fecha de Ingreso: agosto-2009
Ubicación: $this->setLocation('Valencia', 'Spain');
Mensajes: 365
Antigüedad: 14 años, 8 meses
Puntos: 13
Respuesta: ¿Cual es el error de esta actualización en mysql?

Poniendo un echo $query en la funcion. :D
  #14 (permalink)  
Antiguo 10/08/2010, 11:28
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Cual es el error de esta actualización en mysql?

esta es la cadena que me sale

SELECT * FROM SUBJECTS WHERE ID = LIMIT 1

lo probé en el phpmyadmin y me tira el mismo error. El error debe de estar en esta sentencia pero no se donde. Un saludo
  #15 (permalink)  
Antiguo 10/08/2010, 12:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿Cual es el error de esta actualización en mysql?

Entonces tu error es simplísimo: la variable $subject_id está llegando vacía, porque debería haber un valor numérico de comparación entre el "=" y el LIMIT.

Revisa tu PHP porque tienes un error de ejecución.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #16 (permalink)  
Antiguo 10/08/2010, 12:43
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Cual es el error de esta actualización en mysql?

Pero donde estaría el problema, porque en realidad no estoy llamando en esa función. Hago un include a la página donde tengo guardadas las funciones pero en específico nunca he llamado a esa función como pueden ver. Es lo que no entiendo.

Les dejo el código de la página para que vean que nunca llamo a get_subject_by_id ni a get_page_by_id

Código PHP:
<?php require_once ("includes/connection.php");?>
<?php 
require_once ("includes/functions.php");?>
<?php 
    find_selected_page
();    
?>

<?php
    
if (intval($_GET['subj']) == ) {
        
redirect_to("content.php");
        
    }
    if (isset(
$_POST['submit'])) {
        
$errors = array();
        
        
$required_fields = array('menu_name''position''visible');
        foreach(
$required_fields as $fieldname) {
            if (!isset(
$_POST[$fieldname]) || (empty($_POST[$fieldname]) && ($_POST[$fieldname]) !=0)) {
                
$errors[] = $fieldname;
            }
        }
        
$fields_with_lenghts = array('menu_name' => 30);
        foreach(
$fields_with_lenghts as $fieldname => $maxlength) {
            if (
strlen(trim(mysql_prep($_POST[$fieldname]))) > $maxlength) {
                
$errors[] = $fieldname;
            }
        }
        
        if (empty(
$errors)) {
            
//perform update
            
$id mysql_prep($_GET['subj']);
            
$menu_name mysql_prep($_POST['menu_name']);
            
$position mysql_prep($_POST['position']);
            
$visible mysql_prep($_POST['visible']);
            
            
$query "UPDATE subjects SET
                        menu_name = '$menu_name', 
                        position = $position,
                        visible = $visible
                      WHERE id = $id"
;
            
$result mysql_query($query$connection);
            if (
mysql_affected_rows() == 1) {
                
//Success
            
} else {
                
//failed
            
}
            
        } else {
            
//errors occurred    
        
}
        
        
        
        
    } 
// end if (isset($_POST['submit']))
?>

<?php include ("includes/header.php");?>
        <table id="structure">
            <tr>
                <td id="navigation">
                    <?php echo navigation($sel_subject$sel_page);?>
                </td>
                <td id="page">
                <h2>Edit Subject <?php echo $sel_subject['menu_name'];?></h2>
                <form action="edit_subject.php?subj=<?php urlencode($sel_subject['id']); ?>" method="post">
                    <p>Subject Name:
                        <input type="text" name="menu_name" value="<?php echo $sel_subject['menu_name'];?>" id="menu_name" />
                        
                    </p>
                    <p>Position:
                        <select name="position">
                        <?php
                            
//subject_count +1 because we're adding a subject
                            
$subject_set get_all_subjects();
                            
$subject_count mysql_num_rows($subject_set);
                            for (
$count=1$count <= $subject_count+1$count++){
                                echo 
"<option value=\"{$count}\"";
                                if (
$sel_subject['position'] == $count) {
                                    echo 
"selected";
                                }
                                echo 
">{$count}</option>";
                                
                            }
                        
?>
                            
                        </select>
                    </p>
                    <p>Visible:
                    <input type="radio" name="visible" value="0"<?php
                    
if ($sel_subject['visible'] == 0) {echo "checked";}?> /> No
                    &nbsp
                    <input type="radio" name="visible" value="1"<?php
                    
if ($sel_subject['visible'] == 1) {echo "checked";}?> /> Yes
                    </p>
                    <input type="submit" name="submit" value="Edit Subject" />
                 </form>
                <br />    
                <a href="content.php">Cancel</a>
                     
                </td>
             </tr>
          </table>
       </div>
<?php require ("includes/footer.php");?>
  #17 (permalink)  
Antiguo 10/08/2010, 12:45
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: ¿Cual es el error de esta actualización en mysql?

Compa esa ayuda no es tema de este foro.
Eso es un problema neto de php y como invocas archivos con funciones.
Pregunta en el foro de php-

El error de la base de datos, ya te dijo gnzsoloyo a que se debe.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #18 (permalink)  
Antiguo 10/08/2010, 12:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿Cual es el error de esta actualización en mysql?

Cita:
Pero donde estaría el problema, porque en realidad no estoy llamando en esa función. Hago un include a la página donde tengo guardadas las funciones pero en específico nunca he llamado a esa función como pueden ver. Es lo que no entiendo.
La estás llamando en alguna parte, porque de lo contrario no te estaría dando ese error...
Pero, como te dice Huesos52: Eso no es tema de este foro. Los asuntos de PHP se tratan en el Foro de PHP.
Postea tu duda allá, que ellos te ayudarán más rápido y mejor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #19 (permalink)  
Antiguo 10/08/2010, 12:56
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Cual es el error de esta actualización en mysql?

Muchas gracias
  #20 (permalink)  
Antiguo 10/08/2010, 13:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿Cual es el error de esta actualización en mysql?

Un sólo tip: Fíjate que en tu código haces esto:
Código PHP:
Ver original
  1. <?php
  2. //subject_count +1 because we're adding a subject
  3. $subject_set = get_all_subjects();
  4. $subject_count = mysql_num_rows($subject_set);
  5. for ($count=1; $count <= $subject_count+1; $count++){
  6. echo "<option value=\"{$count}\"";
  7. if ($sel_subject['position'] == $count) {
  8. echo "selected";
  9. }
  10. echo ">{$count}</option>";
  11. }
  12. ?>

¿Te has fijado en esa llamada a get_all_subjects()? ¿has revisado el código de esa función? ¿Verificaste lo que hace?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #21 (permalink)  
Antiguo 11/08/2010, 10:16
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 5 meses
Puntos: 15
Respuesta: ¿Cual es el error de esta actualización en mysql?

Si, pero esa no tiene que ver con la que está jalando el error. Esta es a la función que llama:

Código PHP:
function get_all_subjects(){
        global 
$connection;
        
$query "SELECT * 
            FROM subjects 
            ORDER BY position ASC"
;
    
$subject_set mysql_query($query$connection);
    
confirm_query($subject_set);
    return 
$subject_set;

Gracias
  #22 (permalink)  
Antiguo 11/08/2010, 10:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: ¿Cual es el error de esta actualización en mysql?

Y confirm_query($subject_set), ¿qué es lo que hace?
Aparece siendo llamada desde todas las lecturas...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: mysql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:22.