ALP - Aquileia Linux Project

Gruppo Utenti GNU/Linux – Free Software Bassa Friulana
Oggi è 23/06/2017, 17:25

Tutti gli orari sono UTC




Apri un nuovo argomento Rispondi all’argomento  [ 10 messaggi ] 
Autore Messaggio
 Oggetto del messaggio: Errore SQL1090
MessaggioInviato: 29/04/2010, 12:10 
Non connesso
new_entry
new_entry

Iscritto il: 29/04/2010, 11:57
Messaggi: 5
Località: Rimini
Ciao a tutti, mi sono iscritto perchè ho notato che trattate approfonditamente le connessioni php verso as400 con i driver di client access. per linux.
Il mio problema è questo: ho installato da poco un macchina Ubuntu 9.10 sula quale ho configurato php, mysql ed apache (tutto a mano).
Per motivi di lavoro devo collegarmi all'as400 dell'azienda per la quale lavoro per creare delle pagine di ricerca. Ho configurato unixODBC e funziona, ma quando tento di lanciare uno statement sql che contiene il carattere £, php mi ritorna errore. Se invece lancio un statement sql che non contiene £ ma $ (le mie librerie su as400 possono chiamarsi con nomi che iniziano con £ o $) tutto funziona.
Ho provato a lanciare la stessa ricerca dalla console di isql tramite bash e.. funziona correttamente.
Dove potrebbe essere il problema?
Allego il messaggio di errore che compare su browser quando lancio la ricerca sulla libreria £ ed anche la stringa sql.
Grazie a tutti.

Warning: odbc_exec() [function.odbc-exec]: SQL error: [unixODBC][IBM][iSeries Access ODBC Driver]Invalid string or buffer length., SQL state S1090 in SQLExecDirect in /var/www/As400/inventario.php on line 50

Il codice della pagina php è il seguente:
Codice:
<html>
 <head>
 <title> Gestione Inventario </title>
 <link rel="shortcut icon" href="./images/as400.ico" type="image/x-icon">
 <link rel="stylesheet" type="text/css" href="css/default.css">
 </head>

<?php

include ("config.php");
/* APRO CONNESSIONE AS400 */

//$db_user=$_POST["username"];
//$db_pwd=$_POST["password"];

$connessione = odbc_connect(DSN, DB_USER, DB_PASS);

if (!$connessione)
   {
?> 
  <br>
    <table align="center" width="500" cellspacing="0" cellpadding="4" border="1">
      <tr bgcolor="#e2e2e2">
        <td>
          <font color="#000000" face="helvetica,verdana" size="5">
           <b>PROBLEMI DI CONNESSIONE</b>
          </font>
        </td>
      </tr>
      <tr>
        <td>
          <font size="2" color="#4F4F4F" face="Helvetica, Verdana">
            Il server NON è momentaneamente <b>disponibile</b>
            e NON si può stabilire una connessione. Vi invitiamo a
            riprovare più tardi. Se il problema persiste, per favore,
            segnalatelo al<b><i>
            <a href="mailto:suzzi@gruppob.it">webmaster</a></i></b>.
          </font>
        </td>
      </tr>
    </table>
   
    <?
    exit;
    }

 
$sql = 'select le9cm0 from t42l_£sodi.£leguif0';

$result = odbc_exec($connessione, $sql);
   
if (!$result) { echo("ERRORE\n"); }
else
{
while ($row=odbc_fetch_object($result))
{
$fatte = $row->fatte;
$le9cm1 = $row->le9cm0;

echo "<br>\n" . "Magazzino: " . $le9cm0;
 
echo "<br>\n" .  "Numero celle inventariate : " . $nbrcell;
}
@odbc_free_result($result);
}   
@odbc_close($connessione);

?>


Top
 Profilo  
 
 Oggetto del messaggio: Re: Errore SQL1090
MessaggioInviato: 03/05/2010, 21:13 
Non connesso
slacker
slacker
Avatar utente

Iscritto il: 07/10/2004, 12:41
Messaggi: 1296
Località: Terra - Italia - Friûl - Udine
Mi spieghi poi cos'è per te "le9cm0" una libreria , una variabile o un oggetto ?

_________________
Devo Proprio? pare di si :)


Top
 Profilo  
 
 Oggetto del messaggio: Re: Errore SQL1090
MessaggioInviato: 06/05/2010, 7:26 
Non connesso
new_entry
new_entry

Iscritto il: 29/04/2010, 11:57
Messaggi: 5
Località: Rimini
Allora ti spiego meglio:
le9cm0 è il campo del file di database
t42e_£sodi è la libreria
Codice:
[b]£leguif0[/b] è il file
Sembra proprio che al driver odbc non piaccia il carattere £; ho fatto delle prove di vario tipo ma se c'è quel carattere da errore.
Ho provato ad attivare il log dell'odbc ma non si capisce molto...
Comunque lo allego nel caso tu abbia maggiore esperienza
[code]ODBC][3105][__handles.c][444]
      Exit:[SQL_SUCCESS]
         Environment = 0x21eb52c8
[ODBC][3105][SQLAllocHandle.c][345]
      Entry:
         Handle Type = 2
         Input Handle = 0x21eb52c8
[ODBC][3105][SQLAllocHandle.c][463]
      Exit:[SQL_SUCCESS]
         Output Handle = 0x21eb5870
[ODBC][3105][SQLConnect.c][3549]
      Entry:           
         Connection = 0x21eb5870           
         Server Name = [AS400][length = 5 (SQL_NTS)]           
         User Name = [suzzi][length = 5 (SQL_NTS)]           
         Authentication = [*********][length = 9 (SQL_NTS)]
      UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'

[ODBC][3105][SQLConnect.c][4123]
      Exit:[SQL_SUCCESS]
[ODBC][3105][SQLDisconnect.c][204]
      Entry:           
         Connection = 0x21eb5870
[ODBC][3105][SQLDisconnect.c][341]
      Exit:[SQL_SUCCESS]
[ODBC][3105][SQLFreeHandle.c][268]
      Entry:
         Handle Type = 2
         Input Handle = 0x21eb5870
[ODBC][3105][SQLFreeHandle.c][317]
      Exit:[SQL_SUCCESS]
[ODBC][3105][SQLFreeHandle.c][203]
      Entry:
         Handle Type = 1
         Input Handle = 0x21eb52c8
[ODBC][3107][__handles.c][444]
      Exit:[SQL_SUCCESS]
         Environment = 0x21eb32c0
[ODBC][3107][SQLAllocHandle.c][345]
      Entry:
         Handle Type = 2
         Input Handle = 0x21eb32c0
[ODBC][3107][SQLAllocHandle.c][463]
      Exit:[SQL_SUCCESS]
         Output Handle = 0x21eb3868
[ODBC][3107][SQLConnect.c][3549]
      Entry:           
         Connection = 0x21eb3868           
         Server Name = [AS400][length = 5 (SQL_NTS)]           
         User Name = [CA400_CC][length = 8 (SQL_NTS)]           
         Authentication = [********][length = 8 (SQL_NTS)]
      UNICODE Using encoding ASCII 'ISO8859-1' and UNICODE 'UCS-2LE'

[ODBC][3107][SQLConnect.c][4123]
      Exit:[SQL_SUCCESS]
[ODBC][3107][SQLAllocHandle.c][510]
      Entry:
         Handle Type = 3
         Input Handle = 0x21eb3868
[ODBC][3107][SQLAllocHandle.c][872]
      Exit:[SQL_SUCCESS]
         Output Handle = 0x21ecc6c0
[ODBC][3107][SQLGetInfo.c][214]
      Entry:           
         Connection = 0x21eb3868           
         Info Type = SQL_FETCH_DIRECTION (8)           
         Info Value = 0xbfdcfcdc           
         Buffer Length = 4           
         StrLen = (nil)
[ODBC][3107][SQLGetInfo.c][528]
      Exit:[SQL_SUCCESS]
[ODBC][3107][SQLSetStmtOption.c][174]
      Entry:           
         Statement = 0x21ecc6c0           
         Option = SQL_ATTR_CURSOR_TYPE           
         Value = 3
[ODBC][3107][SQLSetStmtOption.c][370]
      Exit:[SQL_SUCCESS]
[ODBC][3107][SQLExecDirect.c][233]
      Entry:           
         Statement = 0x21ecc6c0           
         SQL = [select le9cm0 from t42l_£sodi.£leguif0][length = 38 (SQL_NTS)]
[ODBC][3107][SQLExecDirect.c][496]
      Exit:[SQL_ERROR]
      DIAG [S1090] [IBM][iSeries Access ODBC Driver]Invalid string or buffer length.

[ODBC][3107][SQLError.c][342]
      Entry:               
         Statement = 0x21ecc6c0               
         SQLState = 0xbfdcfa7e               
         Native = 0xbfdcfa84               
         Message Text = 0xbfdcfa8c               
         Buffer Length = 511               
         Text Len Ptr = 0xbfdcfa8a
[ODBC][3107][SQLError.c][379]
      Exit:[SQL_SUCCESS]                   
         SQLState = S1090                   
         Native = 0xbfdcfa84 -> 30038                   
         Message Text = [[unixODBC][IBM][iSeries Access ODBC Driver]Invalid string or buffer length.]
[ODBC][3107][SQLFreeStmt.c][140]
      Entry:           
         Statement = 0x21ecc6c0           
         Option = 1
[ODBC][3107][SQLFreeHandle.c][365]
      Entry:
         Handle Type = 3
         Input Handle = 0x21ecc6c0
[ODBC][3107][SQLFreeHandle.c][462]
      Exit:[SQL_SUCCESS]
[ODBC][3107][SQLDisconnect.c][204]
      Entry:           
         Connection = 0x21eb3868
[ODBC][3107][SQLDisconnect.c][341]
      Exit:[SQL_SUCCESS]
[ODBC][3107][SQLFreeHandle.c][268]
      Entry:
         Handle Type = 2
         Input Handle = 0x21eb3868
[ODBC][3107][SQLFreeHandle.c][317]
      Exit:[SQL_SUCCESS]
[ODBC][3107][SQLFreeHandle.c][203]
      Entry:
         Handle Type = 1
         Input Handle = 0x21eb32c0
[ODBC][9221][__handles.c][444]
      Exit:[SQL_SUCCESS]
         Environment = 0x21ebb2e0
[ODBC][9221][SQLAllocHandle.c][345]
      Entry:
         Handle Type = 2
         Input Handle = 0x21ebb2e0


Top
 Profilo  
 
 Oggetto del messaggio: Re: Errore SQL1090
MessaggioInviato: 15/05/2010, 7:30 
Non connesso
slacker
slacker
Avatar utente

Iscritto il: 07/10/2004, 12:41
Messaggi: 1296
Località: Terra - Italia - Friûl - Udine
il file php che hai creato ha l'encoding UTF8 ?
se lo salvi in ISO il carattere "pound" non viene letto correttamente

_________________
Devo Proprio? pare di si :)


Top
 Profilo  
 
 Oggetto del messaggio: Re: Errore SQL1090
MessaggioInviato: 17/05/2010, 7:44 
Non connesso
new_entry
new_entry

Iscritto il: 29/04/2010, 11:57
Messaggi: 5
Località: Rimini
Come faccio a salvare il file php in UTF 8?
Ho provato ad inserire l'struzione utf8_decode($sql); dove $sql è lo statement che deve essere eseguito ma niente di nuovo.


Top
 Profilo  
 
 Oggetto del messaggio: Re: Errore SQL1090
MessaggioInviato: 17/05/2010, 17:24 
Non connesso
slacker
slacker
Avatar utente

Iscritto il: 07/10/2004, 12:41
Messaggi: 1296
Località: Terra - Italia - Friûl - Udine
no , quando crei il file php sincerati che l0'editor salvi il file in UTF8 , così da poter scrivere caratteri e farli leggere come si deve .

ti consiglio di usare un editor serio , non fare l'evoluto con Notepad , perchè è inutile .

_________________
Devo Proprio? pare di si :)


Top
 Profilo  
 
 Oggetto del messaggio: Re: Errore SQL1090
MessaggioInviato: 18/05/2010, 13:20 
Non connesso
new_entry
new_entry

Iscritto il: 29/04/2010, 11:57
Messaggi: 5
Località: Rimini
Ho provato a salvarlo in UTF con PSPad ma da lo stesso tipo di errore...
:x :x


Top
 Profilo  
 
 Oggetto del messaggio: Re: Errore SQL1090
MessaggioInviato: 18/05/2010, 18:58 
Non connesso
slacker
slacker
Avatar utente

Iscritto il: 07/10/2004, 12:41
Messaggi: 1296
Località: Terra - Italia - Friûl - Udine
mhm , sto pensando a mille modi per ovviare .
Ma l'unica cosa che mi viene in testa è "da pazzi usare il simbolo del pound nel nome di una tabella" .

se vai un var_dump() della query la string aè scritta bene ?
cerca di poter fare i log delle query e vedere che costa viene scritto .

_________________
Devo Proprio? pare di si :)


Top
 Profilo  
 
 Oggetto del messaggio: Re: Errore SQL1090
MessaggioInviato: 19/05/2010, 8:22 
Non connesso
new_entry
new_entry

Iscritto il: 29/04/2010, 11:57
Messaggi: 5
Località: Rimini
Ho aggiunto il var_dump() ed ecco cosa appare

string(38) "select le9cm0 from t42l_£sodi.£leguif0" select le9cm0 from t42l_£sodi.£leguif0
Warning: odbc_exec() [function.odbc-exec]: SQL error: [unixODBC][IBM][iSeries Access ODBC Driver]Invalid string or buffer length., SQL state S1090 in SQLExecDirect in /var/www/As400/inventario.php on line 76
ERRORE
Sembra che la stringa sql sia corretta.
:? :?


Top
 Profilo  
 
 Oggetto del messaggio: Re: Errore SQL1090
MessaggioInviato: 23/05/2010, 8:47 
Non connesso
slacker
slacker
Avatar utente

Iscritto il: 07/10/2004, 12:41
Messaggi: 1296
Località: Terra - Italia - Friûl - Udine
il var_dump() ti restituisce quello che vede il server PHP , non quello che riporta il motore SQL del AS .

_________________
Devo Proprio? pare di si :)


Top
 Profilo  
 
Visualizza ultimi messaggi:  Ordina per  
Apri un nuovo argomento Rispondi all’argomento  [ 10 messaggi ] 

Tutti gli orari sono UTC


Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduzione Italiana phpBBItalia.net basata su phpBB.it 2010
[ Time : 0.050s | 13 Queries | GZIP : Off ]