FAQ
Tengo el siguiente código, que recoge unas variables de un form, y con ellas ejecuta una query, que en principio es algo tan sencillo como un simple INSERT INTO. Problema: llevo un montón de tiempo intentándolo pero no funciona. He puesto prints para ver paso a paso lo que pasa. Las variables las recibe bien (del form donde proceden), y después de pasarlas a la query siguen estando correctas (no se estropean durante el proceso ni nada raro), pero cuando verifico la ejecución de la query... KO! Alguien sabe cuál puede ser el motivo?

Os adjunto el código...

<?PHP
$conex=mysql_connect ("localhost", "root", "") or die ("No connect!");

$seleccion=mysql_select_db ("facturacio", $conex);

// Visualizo todas las variables recibidas del form, se visualizan todas OK

echo("Las variables recibidas són: <br>". $_POST['Adreca'] ."<br>". $_POST['Nom'] ."<br>". $_POST['NIF'] ."<br>". $_POST['Poblacio'] ."<br>". $_POST['CodiPostal'] ."<br>". $_POST['Telefon']);

// Verifica si las variables existen -> OK, printa si porque las recibe bien

$existe=isset($_POST['Adreca']);

if ($existe)
print "SI";
else
print "No";

$query="INSERT INTO Clients VALUES (NULL, '$NIF', '$Nom', '$Adreca', '$Poblacio', '$CodiPostal', '$Telefon')";

// Verifica si las variables existen -> OK, printa si porque las variables siguen existiendo

$existe=isset($_POST['Adreca']);

if ($existe)
print "SI";
else
print "No";

$result=mysql_db_query ("facturacio",$query);

// Verifica si la query se ha ejecutado correctamente -> Responde No, KO!!! FALLA!!!! porque????

if ($result)
print "SI";
else
print "No";

mysql_close ($conex);
?>

Nota:
- Las variables están definidas igual en la base de datos y son todas varchar menos la primera, que le paso en la query un NULL porque es auto_increment.
- No da ningún error de ejecución, sencillamente no hace "nada" (no ejecuta la query).

Muchísimas gracias de antemano por vuestro tiempo,

Search Discussions

  • Pablo E. Siciliano at Jan 20, 2004 at 1:16 pm
    1) Imprimí $query, y mandalo directamente al motor mysql, a ver que pasa.
    2) ¿Seguro de que tenés al máximo el reporte de errores de PHP? Por ahí, te
    esta tirando un error, y no te lo esta mostrando. Fijate en phpinfo() el
    estado del logueo de errores, y contanos
    3) No se si el driver de mysql que esta usando tu php soporta queries sin
    los campos (De hecho nunca lo probé), aunque supongo que no debería haber
    problemas, si mysql se los banca. Probá poner el insert completo, no
    abreviado, y sin pasarle el primer campo. Creo, sin ponerme a probarlo que
    el auto_increment de mysql no funciona como un trigger en otras bases de
    datos: no podés pasarle un null a un campo not null, esperando que el lo
    corrija por ser auto_increment.

    Suerte con esto.
    Pablo.

    ----- Original Message -----
    From: "Lluis Abad" <a.farran@cgac.es>
    To: <lista@phpes.com>
    Sent: Tuesday, January 20, 2004 3:04 AM
    Subject: [PHP-ES] La query no se ejecuta correctamente


    Tengo el siguiente código, que recoge unas variables de un form, y con ellas
    ejecuta una query, que en principio es algo tan sencillo como un simple
    INSERT INTO. Problema: llevo un montón de tiempo intentándolo pero no
    funciona. He puesto prints para ver paso a paso lo que pasa. Las variables
    las recibe bien (del form donde proceden), y después de pasarlas a la query
    siguen estando correctas (no se estropean durante el proceso ni nada raro),
    pero cuando verifico la ejecución de la query... KO! Alguien sabe cuál puede
    ser el motivo?

    Os adjunto el código...

    <?PHP
    $conex=mysql_connect ("localhost", "root", "") or die ("No connect!");

    $seleccion=mysql_select_db ("facturacio", $conex);

    // Visualizo todas las variables recibidas del form, se visualizan todas OK

    echo("Las variables recibidas són: <br>". $_POST['Adreca'] ."<br>".
    $_POST['Nom'] ."<br>". $_POST['NIF'] ."<br>". $_POST['Poblacio'] ."<br>".
    $_POST['CodiPostal'] ."<br>". $_POST['Telefon']);

    // Verifica si las variables existen -> OK, printa si porque las recibe bien

    $existe=isset($_POST['Adreca']);

    if ($existe)
    print "SI";
    else
    print "No";

    $query="INSERT INTO Clients VALUES (NULL, '$NIF', '$Nom', '$Adreca',
    '$Poblacio', '$CodiPostal', '$Telefon')";

    // Verifica si las variables existen -> OK, printa si porque las variables
    siguen existiendo

    $existe=isset($_POST['Adreca']);

    if ($existe)
    print "SI";
    else
    print "No";

    $result=mysql_db_query ("facturacio",$query);

    // Verifica si la query se ha ejecutado correctamente -> Responde No, KO!!!
    FALLA!!!! porque????

    if ($result)
    print "SI";
    else
    print "No";

    mysql_close ($conex);
    ?>

    Nota:
    - Las variables están definidas igual en la base de datos y son todas
    varchar menos la primera, que le paso en la query un NULL porque es
    auto_increment.
    - No da ningún error de ejecución, sencillamente no hace "nada" (no ejecuta
    la query).

    Muchísimas gracias de antemano por vuestro tiempo,
  • Gustavo Castro at Jan 21, 2004 at 3:21 am
    Hola:

    Puedo decir una burrada, pero no le falta los nombres de los campos a donde
    pones casa dato, en la sintaxis lo marca, pero yo probaria, aunque puede ser
    algo opcional, aunque no estoy seguro,

    Saludos

    Gustavo
    ----- Original Message -----
    From: "Lluis Abad" <a.farran@cgac.es>
    To: <lista@phpes.com>
    Sent: Tuesday, January 20, 2004 3:04 AM
    Subject: [PHP-ES] La query no se ejecuta correctamente


    Tengo el siguiente código, que recoge unas variables de un form, y con ellas
    ejecuta una query, que en principio es algo tan sencillo como un simple
    INSERT INTO. Problema: llevo un montón de tiempo intentándolo pero no
    funciona. He puesto prints para ver paso a paso lo que pasa. Las variables
    las recibe bien (del form donde proceden), y después de pasarlas a la query
    siguen estando correctas (no se estropean durante el proceso ni nada raro),
    pero cuando verifico la ejecución de la query... KO! Alguien sabe cuál puede
    ser el motivo?

    Os adjunto el código...

    <?PHP
    $conex=mysql_connect ("localhost", "root", "") or die ("No connect!");

    $seleccion=mysql_select_db ("facturacio", $conex);

    // Visualizo todas las variables recibidas del form, se visualizan todas OK

    echo("Las variables recibidas són: <br>". $_POST['Adreca'] ."<br>".
    $_POST['Nom'] ."<br>". $_POST['NIF'] ."<br>". $_POST['Poblacio'] ."<br>".
    $_POST['CodiPostal'] ."<br>". $_POST['Telefon']);

    // Verifica si las variables existen -> OK, printa si porque las recibe bien

    $existe=isset($_POST['Adreca']);

    if ($existe)
    print "SI";
    else
    print "No";

    $query="INSERT INTO Clients VALUES (NULL, '$NIF', '$Nom', '$Adreca',
    '$Poblacio', '$CodiPostal', '$Telefon')";

    // Verifica si las variables existen -> OK, printa si porque las variables
    siguen existiendo

    $existe=isset($_POST['Adreca']);

    if ($existe)
    print "SI";
    else
    print "No";

    $result=mysql_db_query ("facturacio",$query);

    // Verifica si la query se ha ejecutado correctamente -> Responde No, KO!!!
    FALLA!!!! porque????

    if ($result)
    print "SI";
    else
    print "No";

    mysql_close ($conex);
    ?>

    Nota:
    - Las variables están definidas igual en la base de datos y son todas
    varchar menos la primera, que le paso en la query un NULL porque es
    auto_increment.
    - No da ningún error de ejecución, sencillamente no hace "nada" (no ejecuta
    la query).

    Muchísimas gracias de antemano por vuestro tiempo,
  • Minimum at Jan 21, 2004 at 3:51 am
    La sintaxis de INSERT es

    INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    VALUES ((expression | DEFAULT),...),(...),...
    or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
    [INTO] tbl_name [(col_name,...)]
    SELECT ...
    or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
    [INTO] tbl_name
    SET col_name=(expression | DEFAULT), ...


    Si no vas a poner el nombre de las columnas entonces los valores deben estar
    en el orden en el que estan las columnas en la tabla de la base de datos, a
    mi personalmente me gusta poner los nombres de las columnas.

    INSERT INTO tbl_name (col1,col2) VALUES($col1, $col2);

    ¿has probado tu $query en el phpmyadmin o similar..?

    -----Mensaje original-----
    De: Lluis Abad
    Enviado el: martes, 20 de enero de 2004 7:04
    Para: lista@phpes.com
    Asunto: [PHP-ES] La query no se ejecuta correctamente


    Tengo el siguiente código, que recoge unas variables de un form, y con ellas
    ejecuta una query, que en principio es algo tan sencillo como un simple
    INSERT INTO. Problema: llevo un montón de tiempo intentándolo pero no
    funciona. He puesto prints para ver paso a paso lo que pasa. Las variables
    las recibe bien (del form donde proceden), y después de pasarlas a la query
    siguen estando correctas (no se estropean durante el proceso ni nada raro),
    pero cuando verifico la ejecución de la query... KO! Alguien sabe cuál puede
    ser el motivo?

    Os adjunto el código...

    <?PHP
    $conex=mysql_connect ("localhost", "root", "") or die ("No connect!");

    $seleccion=mysql_select_db ("facturacio", $conex);

    // Visualizo todas las variables recibidas del form, se visualizan todas OK

    echo("Las variables recibidas són: <br>". $_POST['Adreca'] ."<br>".
    $_POST['Nom'] ."<br>". $_POST['NIF'] ."<br>". $_POST['Poblacio'] ."<br>".
    $_POST['CodiPostal'] ."<br>". $_POST['Telefon']);

    // Verifica si las variables existen -> OK, printa si porque las recibe bien

    $existe=isset($_POST['Adreca']);

    if ($existe)
    print "SI";
    else
    print "No";

    $query="INSERT INTO Clients VALUES (NULL, '$NIF', '$Nom', '$Adreca',
    '$Poblacio', '$CodiPostal', '$Telefon')";

    // Verifica si las variables existen -> OK, printa si porque las variables
    siguen existiendo

    $existe=isset($_POST['Adreca']);

    if ($existe)
    print "SI";
    else
    print "No";

    $result=mysql_db_query ("facturacio",$query);

    // Verifica si la query se ha ejecutado correctamente -> Responde No, KO!!!
    FALLA!!!! porque????

    if ($result)
    print "SI";
    else
    print "No";

    mysql_close ($conex);
    ?>

    Nota:
    - Las variables están definidas igual en la base de datos y son todas
    varchar menos la primera, que le paso en la query un NULL porque es
    auto_increment.
    - No da ningún error de ejecución, sencillamente no hace "nada" (no ejecuta
    la query).

    Muchísimas gracias de antemano por vuestro tiempo,
  • Eugenio Dapena Camprubi at Jan 21, 2004 at 2:40 pm
    Mmmm

    Pareciera que hay un problema por aca...
    $query="INSERT INTO Clients VALUES (NULL, '$NIF', '$Nom', '$Adreca',
    $Poblacio', '$CodiPostal', '$Telefon')";
    // Verifica si las variables existen -> OK, printa si porque las variables
    s>iguen existiendo

    En ninguna parte antes, hiciste algo como

    $NIF=$HTTP_POST_VARS["NIF"];


    Saludos

    Eugenio
  • Cristian R . Márquez Triviño at Jan 23, 2004 at 12:39 am
    Verifica como tienes seteada la variable "register_globals" en el
    php.ini si esta en off entonces $_POST['NIF'] es distinto de $NIF, por
    seguridad de manejo de variables globales.

    Chao

    Cristian Márquez

    -----Mensaje original-----
    De: Eugenio Dapena Camprubi
    Enviado el: Miércoles, 21 de Enero de 2004 10:45
    Para: lista@phpes.com
    Asunto: Re: [PHP-ES] La query no se ejecuta correctamente

    Mmmm

    Pareciera que hay un problema por aca...
    $query="INSERT INTO Clients VALUES (NULL, '$NIF', '$Nom', '$Adreca',
    $Poblacio', '$CodiPostal', '$Telefon')";
    // Verifica si las variables existen -> OK, printa si porque las
    variables
    s>iguen existiendo

    En ninguna parte antes, hiciste algo como

    $NIF=$HTTP_POST_VARS["NIF"];


    Saludos

    Eugenio



    ---------------------------------------------------------------------
    Archivo On-line: http://www.phpes.com/
    via news: news://news.phpes.com/
    Manual PHP en español: http://www.php.net/manual/es/
    Para dar de baja la suscripción, mande un mensaje a:
    lista-unsubscribe@phpes.com
  • Cristian R . Márquez Triviño at Jan 23, 2004 at 12:42 am
    En el correo anterior me olvide colocar que al estar register_globals en
    off $NIF no contiene nada. Para que $_POST['NIF'] sea igual $NIF
    entonces register_globals debe estar en on, sino tienes control del
    servidor con el comando ini_set() lo manejas.

    Chao

    Cristian Márquez

    -----Mensaje original-----
    De: Eugenio Dapena Camprubi
    Enviado el: Miércoles, 21 de Enero de 2004 10:45
    Para: lista@phpes.com
    Asunto: Re: [PHP-ES] La query no se ejecuta correctamente

    Mmmm

    Pareciera que hay un problema por aca...
    $query="INSERT INTO Clients VALUES (NULL, '$NIF', '$Nom', '$Adreca',
    $Poblacio', '$CodiPostal', '$Telefon')";
    // Verifica si las variables existen -> OK, printa si porque las
    variables
    s>iguen existiendo

    En ninguna parte antes, hiciste algo como

    $NIF=$HTTP_POST_VARS["NIF"];


    Saludos

    Eugenio



    ---------------------------------------------------------------------
    Archivo On-line: http://www.phpes.com/
    via news: news://news.phpes.com/
    Manual PHP en español: http://www.php.net/manual/es/
    Para dar de baja la suscripción, mande un mensaje a:
    lista-unsubscribe@phpes.com
  • Lluis Abad at Jan 27, 2004 at 7:19 am
    Manuel, ante nada agradecerte tu tiempo. En segundo lugar he realizado los cambios que me indicaste en el codigo.
    El codigo resultante ha sido el siguiente:

    <?PHP
    $conex=mysql_connect ("localhost", "root", "") or die ("No connect!");

    $seleccion=mysql_select_db ("facturacio", $conex);

    // Verifica si las variables llegan -> OK

    print_r ($_POST);

    // Intenta imprimir nif como prueba, pero da el error "UNDEFINED INDEX nif in..."

    print ($_POST['nif']);

    extract ($_POST);

    // da error en las variables

    $query="INSERT INTO Clients (codcli, nif, nom, adreca, poblacio, codipost, telefon) VALUES ('22','$nif', '$nom', '$adreca', '$poblacio', '$codipost', '$telefon')";

    // las variables siguen viendose, existen

    print_r ($_POST);

    $result=mysql_db_query ("facturacio",$query);

    // Verifica si la query se ha ejecutado correctamente -> Responde Si, la query se ejecuta, pero solo introduce
    // el 22 en el primer campo del nuevo registro que crea, los otros quedan vacíos

    if ($result)
    print "SI";
    else
    print "No";

    mysql_close ($conex);
    ?>

    Aún habiendo hecho estos cambios, al ejecutar el script, da error en la query. Si pongo el extract() antes y dentro de la query pongo las variables dice que no existen.
    Si no uso el extract() y pongo las variables con $_POST['nombre variable'], entonces el error que da es que no existe el indice.
    La salida que da el código anterior es:

    Array ( [NIF] => a [Nom] => a [Adreca] => a [Poblacio] => a [CodiPostal] => a [Telefon] => a )
    Notice: Undefined index: nif in C:\www\Projecte\AltaCli.php on line 12

    Notice: Undefined variable: nif in C:\www\Projecte\AltaCli.php on line 18

    Notice: Undefined variable: nom in C:\www\Projecte\AltaCli.php on line 18

    Notice: Undefined variable: adreca in C:\www\Projecte\AltaCli.php on line 18

    Notice: Undefined variable: poblacio in C:\www\Projecte\AltaCli.php on line 18

    Notice: Undefined variable: codipost in C:\www\Projecte\AltaCli.php on line 18

    Notice: Undefined variable: telefon in C:\www\Projecte\AltaCli.php on line 18
    Array ( [NIF] => a [Nom] => a [Adreca] => a [Poblacio] => a [CodiPostal] => a [Telefon] => a ) Si

    Cuál puede ser el problema?

    Gracias una vez mas.
  • Manuel González Noriega at Jan 27, 2004 at 9:51 am

    El mar, 27-01-2004 a las 08:19, Lluis Abad escribió:
    Manuel, ante nada agradecerte tu tiempo. En segundo lugar he realizado los cambios que me indicaste en el codigo.
    El codigo resultante ha sido el siguiente:
    $query="INSERT INTO Clients (codcli, nif, nom, adreca, poblacio, codipost, telefon) VALUES ('22','$nif', '$nom', '$adreca', '$poblacio', '$codipost', '$telefon')";
    Prueba sacando las vbles de las comillas simples y además utilizandolas
    directamente dentro del array

    $query="INSERT INTO Clients (codcli, nif, nom, adreca, poblacio,
    codipost, telefon) VALUES ('22','".$_POST['nif']."',
    '".$_POST['nom']."', '".$_POST['adreca']."', '".$_POST['poblacio']."',
    '".$_POST['codipost']."', '".$_POST['telefon']."')";


    Ahora, haz echo $query;
    $result=mysql_db_query ("facturacio",$query);

    // Verifica si la query se ha ejecutado correctamente -> Responde Si, la query se ejecuta, pero solo introduce
    // el 22 en el primer campo del nuevo registro que crea, los otros quedan vacíos

    if ($result)
    print "SI";
    else
    print "No";
    Tres cosas,

    a) no necesitas capturar en $result lo q te devuelve un insert
    b) en vez de mysql_db_query, q esta 'deprecated' utiliza mysql_select_db
    y luego mysql_query()
    c) utiliza die() y mysql_error()

    es decir

    mysql_select_db('facturacio');
    mysql_query($query) or die(mysql_error());

    y a ver q te sale

    --
    Manuel González Noriega
    Simplelógica, construcción web
    URL: http://simplelogica.net
    EMAIL: simplelogica@simplelogica.net
    TELEFONO: (+34) 985 22 12 65

    Logicola es el weblog de Simplelógica http://simplelogica.net/logicola/

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedJan 20, '04 at 6:58a
activeJan 27, '04 at 9:51a
posts9
users7
websitephp.net

People

Translate

site design / logo © 2022 Grokbase