Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Problema sintaxis delphi for php (https://www.clubdelphi.com/foros/showthread.php?t=42640)

harpo 18-04-2007 20:50:59

Problema sintaxis delphi for php
 
Buenas gente :)

Estoy probando el Delphi for php y , a parte de ser bastante novato con php, me encuentro con un problema.

He seguido con éxito la ayuda para conectar con una base de datos y mostrar el contenido de una tabla. Pero a la hora de realizar modificaciones sobre dicha tabla, me encuentro conque me salta este error

Código:

Application raised an exception class ADODB_Exception with message 'mysql error: [1064: 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 'LIMIT 0,10' at line 1] in EXECUTE("INSERT INTO customers (`UID`,`SERIALNUM`,`KEY`) values (1,1,1)    LIMIT 0,10")
'

Callstack #0 File: C:\Documents and Settings\harpo\My Documents\Delphi for PHP Projects\unit1.php Line: 44
  |_Callstack #1 File: C:\program files\CodeGear\delphi for php\1.0\vcl\classes.inc.php Line: 1213
    |_Callstack #2 File: C:\program files\CodeGear\delphi for php\1.0\vcl\classes.inc.php Line: 1243
      |_Callstack #3 File: C:\program files\CodeGear\delphi for php\1.0\vcl\classes.inc.php Line: 489
        |_Callstack #4 File:  Line:
          |_Callstack #5 File: C:\program files\CodeGear\delphi for php\1.0\vcl\classes.inc.php Line: 415
            |_Callstack #6 File: C:\program files\CodeGear\delphi for php\1.0\vcl\classes.inc.php Line: 846
              |_Callstack #7 File: C:\program files\CodeGear\delphi for php\1.0\vcl\dbtables.inc.php Line: 510
                |_Callstack #8 File: C:\program files\CodeGear\delphi for php\1.0\vcl\db.inc.php Line: 1117
                  |_Callstack #9 File: C:\program files\CodeGear\delphi for php\1.0\vcl\dbtables.inc.php Line: 693
                    |_Callstack #10 File: C:\program files\CodeGear\delphi for php\1.0\vcl\system.inc.php Line: 190
                      |_Callstack #11 File: C:\program files\CodeGear\delphi for php\1.0\vcl\dbtables.inc.php Line: 1089
                        |_Callstack #12 File: C:\program files\CodeGear\delphi for php\1.0\vcl\db.inc.php Line: 1136
                          |_Callstack #13 File: C:\program files\CodeGear\delphi for php\1.0\vcl\db.inc.php Line: 933
                            |_Callstack #14 File: C:\program files\CodeGear\delphi for php\1.0\vcl\db.inc.php Line: 924
                              |_Callstack #15 File: C:\program files\CodeGear\delphi for php\1.0\vcl\dbtables.inc.php Line: 576
                                |_Callstack #16 File: C:\program files\CodeGear\delphi for php\1.0\vcl\dbtables.inc.php Line: 179
                                  |_Callstack #17 File: C:\program files\CodeGear\delphi for php\1.0\vcl\adodb\drivers\adodb-mysql.inc.php Line: 490
                                    |_Callstack #18 File: C:\program files\CodeGear\delphi for php\1.0\vcl\adodb\adodb.inc.php Line: 882
                                      |_Callstack #19 File: C:\program files\CodeGear\delphi for php\1.0\vcl\adodb\adodb.inc.php Line: 907

E intento insertar con esto

Código:

$s="INSERT INTO customers (`UID`,`SERIALNUM`,`KEY`) values (1,1,1)";
                    $this->Query1->writeSQL($s);

Ese código se ejecuta al clickear sobre un botón. Y otro problema q tengo es q debo de clickear 2 veces para que muestre el error.

A ver si alguien me puede orientar un poquito.

gracias ;)

dec 18-04-2007 20:58:59

Hola,

Si no estoy equivovado el "LIMIT" no cabe en consultas del tipo "INSERT" sino del tipo "SELECT" y "UPDATE", pero, tampoco lo tengo del todo claro... pareciera que tiene alguna lógica, pero, yo hasta ahora no he visto utilizar el "LIMIT" en consultas del tipo "INSERT".

eduenas 18-04-2007 21:10:56

Si quieres evitar todos estos dilemas te recomiendo que programes en capas y solo le mandas la consulta a las tablas , textbox, list ,etc

saludos

JXJ 18-04-2007 22:40:34

Hola Harpo

el codigo php puede ser distinto a como lo estamos acostumbrados
ver cuando se combina php y html, o para los que venimos
de delphi usamos, (yo hice la misma query que tu)

tu query bien puede ser colocada en un componente Query
y por codido dentro de un boton

Código PHP:

$this->Query1->open


pero como lo quieres ejecutar por codigo


revisa, como lo hacen en el demo
ECommerceExample

en el archivo

inc_register.php

hay un codigo, en la linea 55 que ejecuta un query

Código PHP:

$query "SELECT * FROM users WHERE Username = '" mysql_real_escape_string$this->Username->Text ) . "' OR Email = '" mysql_real_escape_string$this->Email->Text ) . "'";

 
GetDBModule()->Query1->close();

                    
GetDBModule()->Query1->SQL $query;

                    
GetDBModule()->Query1->open(); 

suerte

harpo 19-04-2007 13:06:04

Muchas gracias por las respuestas.

Ya solucioné el tema... era por la sintaxis mysql . Lo dejé así

Código:

INSERT INTO `customers` (`UID`, `SERIALNUM`, `KEY`) VALUES (\''.$UID.'\', \''.$SerialN.'\', \''.$Key.'\');'
Cita:

revisa, como lo hacen en el demo
ECommerceExample

en el archivo

inc_register.php

hay un codigo, en la linea 55 que ejecuta un query

Probaré con esto también.

Gracias ;)

noshy 18-12-2007 12:58:21

Insert
 
Si haces un INSERT no puedes poner LIMIT, como haces para sacar el Limit en la Consulta?? de esta manera:

Código PHP:

$this->Query->Close;
$this->Query->LimitStart '-1';
$this->Query->LimitCount '-1';
$this->QUsuarios->writeSQL('<sentencia insert>');
$this->Query->Open;
$this->Query->Close


Espero te sirva.


La franja horaria es GMT +2. Ahora son las 23:22:46.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi