Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Error en sentencia PHP-MYSQL

Estas en el tema de Error en sentencia PHP-MYSQL en el foro de PHP en Foros del Web. Buenas, La verdad no soy muy experto en mysql, mi caso es el siguiente: Tengo una base de datos en la cual cuando se borran ...
  #1 (permalink)  
Antiguo 16/01/2013, 15:38
Avatar de jmorasandi  
Fecha de Ingreso: enero-2013
Mensajes: 30
Antigüedad: 11 años, 3 meses
Puntos: 1
Exclamación Error en sentencia PHP-MYSQL

Buenas, La verdad no soy muy experto en mysql, mi caso es el siguiente:

Tengo una base de datos en la cual cuando se borran los datos desde PHP se almacenan en una tabla diferente, y etc.. En fin, lo que quiero es que en cuanto se ejecute la acción del se inserte en la columna "ff" un campo con la sentencia NOW() en el item que se esta eliminando. Todo esta funcionando excepto la inserción de la sentencia NOW() en la columna ff que es el código que esta en negrita.

Les agradezco su ayuda..


Codigo:

Código:
<?php
require("conexion.php");
require("funciones.php");

$idempresa = getParam($_GET["id"], "-1");
$action = getParam($_GET["action"], "");


if ($action == "del") {
$sql = "INSERT INTO empresa (ff) VALUES (NOW()) WHERE id = ".sqlValue($idempresa, "int");
	mysql_query($sql, $conexion);
	header("location:main.php");

$sql = "INSERT INTO historico SELECT * FROM empresa WHERE id = ".sqlValue($idempresa, "int");

	mysql_query($sql, $conexion);
	header("location:main.php");
}

if ($action == "del") {
$sql= "DELETE FROM empresa WHERE id = ".sqlValue($idempresa, "int");
	mysql_query($sql, $conexion);
	header("location: main.php");
}


?>
  #2 (permalink)  
Antiguo 16/01/2013, 15:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error en sentencia PHP-MYSQL

Imprime el valor de mysql_error() después de la consulta del INSERT que falla, a ver si sale algún error.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 16/01/2013, 15:46
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 12 años, 11 meses
Puntos: 76
Respuesta: Error en sentencia PHP-MYSQL

Noes que la elimine despues del insert, si te fijas esta condicionando dependiendo de la accion que el usuario haya escogido, actualizar , eliminar , etcccccc..

imprimiste el query y lo ejecutaste en la consola de Mysql o phpmyAdmin, para ver si te arrojo algun error
  #4 (permalink)  
Antiguo 16/01/2013, 15:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error en sentencia PHP-MYSQL

Claro, edite mi respuesta después de leer bien.

Sin embargo ahora veo que hay otro error, el INSERT no acepta condiciones WHERE, debería ser un UPDATE.

En todo caso jamás está depurando las consultas, así es complicado adivinar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 16/01/2013, 16:13
Avatar de jmorasandi  
Fecha de Ingreso: enero-2013
Mensajes: 30
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Error en sentencia PHP-MYSQL

A ver si me explico mejor...

La secuencia de lo que quiero lograr es así:

1- Se estampa la secuencia now() (para obtener la hora en que se ejecuto la acción del) en la columna ff de la misma tabla.

2- Se copian todos los datos a la tabla historico (es una tabla de respaldo de datos).

3- Se eliminan los datos de la tabla empresa.

Cabe resaltar que lo intente realizar colocando un timestamp current_time en la tabla para ver si me daba el resultado de la hora en que se ingresaron los datos en la tabla historico pero no funcionó.


A ver si con eso se aclaran un poco las ideas..

Les agradezco de antemano..
  #6 (permalink)  
Antiguo 16/01/2013, 16:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error en sentencia PHP-MYSQL

El que debe aclarar su mente eres tu ya que se entiende perfectamente lo que buscas.

¿Ya depuraste tus consultas?

¿Sabías que INSERT no soporta WHERE?

No esperes que por arte de magia soluciones tu problema, ¿verdad?

Debes ayudarnos a ayudarte, gracias.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 16/01/2013, 16:45
Avatar de jmorasandi  
Fecha de Ingreso: enero-2013
Mensajes: 30
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Error en sentencia PHP-MYSQL

El problema del código se encuentra aquí:

Cita:
if ($action == "del") {
$sql = "INSERT INTO empresa (ff) VALUES (NOW()) WHERE id = ".sqlValue($idempresa, "int");
mysql_query($sql, $conexion);
header("location:main.php");
Ya que todo el resto del código funciona sin ningún problema, de hecho los datos se mueven de tabla y se eliminan lo único que no consigo es estampar la secuencia now() en la tabla ff y que esta quede junto con los demás datos.
  #8 (permalink)  
Antiguo 16/01/2013, 16:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error en sentencia PHP-MYSQL

¿Que parte de "INSERT no soporta WHERE" no entiendes?

Lo que debes usar es UPDATE, ya que estarías actualizando un dato de un registro existente.

Vamos, que aquí es dónde vas y revisas una referencia de MySQL.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 16/01/2013, 20:34
Avatar de jmorasandi  
Fecha de Ingreso: enero-2013
Mensajes: 30
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Error en sentencia PHP-MYSQL

Ya reemplaze el INSERT por UPDATE pero sigue sin funcionar..

Código:
if ($action == "del") {
$sql = "UPDATE empresa (ff) VALUES (NOW()) WHERE id = ".sqlValue($idempresa, "int");
	mysql_query($sql, $conexion);
	header("location:main.php");
  #10 (permalink)  
Antiguo 16/01/2013, 20:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error en sentencia PHP-MYSQL

¿Tu no eres de los que leen el manual nunca verdad?

No se trata de cambiar INSERT por UPDATE y ya, no es tan simple, cada instrucción tiene su propia sintaxis y al parecer no te importa.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 16/01/2013, 20:50
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, 4 meses
Puntos: 2658
Respuesta: Error en sentencia PHP-MYSQL

Por favor, trata de mostrar un poco más de esfuerzo y lee el manual de referencia antes de seguir haciendo intentos de SQL:

MySQL::13.2.10. Sintaxis de UPDATE

Wikipedia::SQL - UPDATE

Maestros del Web::SQL::Consultas de actualizacion


SQL Desde Cero

Y recuerda que el SQL no es parte del PHP. Es un lenguaje de consultas independiente de los lenguajes de programación, y por tanto tiene sus propias reglas de sintaxis que deben ser respetadas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 16/01/2013 a las 20:57
  #12 (permalink)  
Antiguo 17/01/2013, 16:38
Avatar de jmorasandi  
Fecha de Ingreso: enero-2013
Mensajes: 30
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Error en sentencia PHP-MYSQL

En este momento estoy utilizando esta sentencia pero sigue sin funcionar..

Alguna idea del error?

Código:
if ($action == "del") {
$sql = 'UPDATE 
           empresa
        SET
           ff= now(),
        WHERE
           id= ".sqlValue($idempresa, "int")';
	
	mysql_query($sql, $conexion);
}
La duda que tengo es esta correcto utilizar ff=now() o deberia crear un param definiendo now?
  #13 (permalink)  
Antiguo 17/01/2013, 16:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Error en sentencia PHP-MYSQL

Otra cosa que te hemos dicho y que no haces es depurar tu consulta, si no lo haces entonces ahí se esconde el mensaje de error.

Código PHP:
mysql_query($sql$conexion) or die('EL ERROR ES: ' mysql_error()); 
Aunque a simple vista se nota que hay una coma después de "ff= now()," y eso definitivamente está mal.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 17/01/2013, 16:56
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, 4 meses
Puntos: 2658
Respuesta: Error en sentencia PHP-MYSQL

Por empezar, a nivel de SQL embebido en PHP, hay algunos errores que se vuelven visibles cuando usas un IDE que tenga corrector sintáctico (yo suelo usar NetBeans, por ejemplo):
Código PHP:
Ver original
  1. if ($action == "del") {
  2. $sql = 'UPDATE
  3.           empresa
  4.        SET
  5.           ff= now(),
  6.        WHERE
  7.           id= ".sqlValue($idempresa, "int")';
  8.    
  9.     mysql_query($sql, $conexion);
  10. }
Debería ser:
Código PHP:
Ver original
  1. if ($action == "del") {
  2. $sql = "UPDATE
  3.           empresa
  4.        SET
  5.           ff= now(),
  6.        WHERE
  7.           id= ".sqlValue($idempresa, "int");
  8.    
  9.     mysql_query($sql, $conexion) or die("EL ERROR ES: " . mysql_error());
  10. }

Uno de los detalles que debes tener en cuenta es que estás embebiendo un lenguaje de consultas dentro de uno de programación, y esto se debe hacer de modo que el lenguaje de consultas quede luego correctamente escrito al momento de mandarlo a la base de datos.
El uso de comillas y apóstrofos, por ejemplo, es distinto para ambos lenguajes. En MySQL los apóstrofos (') se usan para cadenas de texto, pero las comillas (") no, por lo que el ID no puede quedar encerrando entre comillas en el SQL.
Las comillas, al igual que los acentos graves (`) en SQL se usan para los nombres de objetos como Tablas, Bases, Columnas, etc. Pero no para encerrar datos.
Esta diferencia genera problemas al momento de programar en PHP, por ejemplo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 17/01/2013 a las 17:34
  #15 (permalink)  
Antiguo 17/01/2013, 19:30
Avatar de jmorasandi  
Fecha de Ingreso: enero-2013
Mensajes: 30
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Error en sentencia PHP-MYSQL

Gracias por la respuesta,

El error que me indico fue:


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id= 200' at line 5

La línea 5 de mi codigo es:

$idempresa = getParam($_GET["id"], "-1");
  #16 (permalink)  
Antiguo 17/01/2013, 19:37
Avatar de andresdzphp
Colaborador
 
Fecha de Ingreso: julio-2011
Ubicación: $this->Colombia;
Mensajes: 2.749
Antigüedad: 12 años, 9 meses
Puntos: 793
Respuesta: Error en sentencia PHP-MYSQL

Como te dijo pateketrueke, quita esta coma:

Código PHP:
Ver original
  1. ff= now(), //MAL

Código PHP:
Ver original
  1. ff= now() //BIEN
__________________
Si sabemos como leer e interpretar el manual será mucho más fácil aprender PHP. En lugar de confiar en ejemplos o copiar y pegar - PHP
  #17 (permalink)  
Antiguo 18/01/2013, 15:53
Avatar de jmorasandi  
Fecha de Ingreso: enero-2013
Mensajes: 30
Antigüedad: 11 años, 3 meses
Puntos: 1
Respuesta: Error en sentencia PHP-MYSQL

Gracias a todos por su ayuda!

Al final me quedaron algunos conocimientos y se pudo resolver el problema :D!


Les agradezco millones..

Etiquetas: mysql, php-mysql, sentencia, sql, tabla
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 00:22.