Newsgroup: it.comp.www.php
Titolo: Esiste un tempo di latenza ?

Scusate la domanda ma eseste un tempo di latenza per inserire dati in un
database ?
Mi spiego
se ho un tabella prova formata da 2 canti
item1 : longtext
item2 : longtext
ed eseguo questo codice
$db=connetti();
$a=itemlist[0];
$b=itemlist[1];
$query="INSERT INTO prova (item1,item2) Value  ('$a','$b');
mysql_query($query,$db) or mysql_error();
$a=itemlist[2];
$b=itemlist[3];
$query="INSERT INTO prova (item1,item2) Value  ('$a','$b');
mysql_query($query,$db) or mysql_error();
mysql_close($db);
per quale arcano motivo la prima query viene eseguita e mi trovo il record
nella taballa e il secondo viene eseguito (nessum messaggio di errore viene
visualizzato) ma il record non viene posizionato nella tabella ?
Grazie per la riposta    ReDiCuori
--
L'informatica è un arte
---------------------------------------------------------
 
www.pascallike.too.it
 
http://utenti.lycos.it/pascallike
 il sito sulla programmazione pascal e non solo
---------------------------------------------------------


Prova ad eseguire un COMMIT prima di chiudere la tabella
Ciao

> Prova ad eseguire un COMMIT prima di chiudere la tabella
Ho provato a mettere tutti in un ciclo e farmi stampare le varie query
inoltre ho inserito un COMMIT non so se ho fatto bene, cmq mi succede una
cosa molto strana che il commit non ha risolto, ossia con un array di 21
elementi mi ritrovo una tabella riempita con soli 7 elementi al posto di 14
e messi nel seguente ordine :
1°coppia,7°,8°,10°..
un bel salto
il codice è il seguente  :
<?php  // FAQ : AGGIORNAMENTO DATABASE
$filename="faq.txt";
if (file_exists($filename))
  {
   $fp=fopen($filename,"r");
   $s = fread($fp,filesize($filename));
   fclose($fp);
     $list=split("?",$s);
     $c=count($list);
     for ($i=0; $i<$c; $i++)
        $list[$i]=trim($list[$i]);
     $i=0;
      require_once("connect.php");
     $db=connessione("pascallike_it_db");
      while ($i<$c)
          {
              echo "$i<br>";
              $a=$list[$i];
              echo "$a<BR>";
              $i=$i+1;
             echo "$i<br>";
             $b=$list[$i];
             echo "$b<BR>";
              $query="INSERT INTO faq (titolo,descrizione) VALUES
('$a','$b')";
              mysql_query($query,$db) or mysql_error();
                $i=$i+1;
          }
        mysql_query("COMMIT",$db);
 mysql_close($db);
  }
else echo "NO file";
?>
Faccio qualche sbaglio ?


 il codice è il seguente  :
A occhio mi sembra ok tranne per il fatto che usi $list, list è una parola
riservata e non vorrei che facesse casino una variabile con quel nome, prova
a cambiare il nome a quell'array, poi visualizza $query subito dopo averla
settata e controllane il contenuto, controlla che la variabile $i non sia
usata anche in connect.php in tal caso il valore potrebbe essere alterato
all'inizio del ciclo, idem per le altre variabili. Poi se non ti servono le
espressioni regolari usa explode invece di split che è più veloce. Suppongo
ovviamente che mysql non ti dia errore perchè vedo che non vai ad inserire
lo \ prima di eventuali apici presenti nelle variabili che poi passi alla
query, quindi suppongo che tra i dati che tu usi non ci siano apici.
Ciao

 query, quindi suppongo che tra i dati che tu usi non ci siano apici.
Mi sa che il problema è proprio questo sono state scartate tutte le parti
del file che contenebano sia " che '
dovrei utilizzare una cosa del genere
$a=preg_replace(''','/'',$lista)  ?
Scusami se ti scoccio ancora
Grazie ReDiCuori



Cambia il ciclo for che c'č nello script in questo modo:
     for ($i=0; $i<$c; $i++)
        $list[$i]=str_replace( '\'', '\\\'', trim($list[$i]) );
Ciao


oppure cambia il blocco di codice:
    fclose($fp);
    $list=split("?",$s);
in:
    fclose($fp);
    $s = str_replace( '\'', '\\\'', $s );
    $list=split("?",$s);
questo è un po' più veloce soprattutto per le grandi quantità di dati
Ciao