Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    18

    Errori non visualizzati mysqli

    Salve a tutti, ho un problema a cui non riesco a venire a capo, e spero che qualcuno di vooi saggi possa aiutarmi
    Ho costruito una classe che fa da intermediaria tra le mie pagine o classi e mysqli.
    Il mio problema č che mentre le query di SELECT funzionano senza problemi, le INSERT bloccano la pagina per un errore, ma non restituiscono il codice d'errore, e quindi non riesco a capire come risolvere il problema nč dove sia. Vorrei quindi chiedere se qualcuno ha voglia di dare un'occhiata alla mia classe che probabilmente č quella sbaglita, temo in qualche errore di base della programmazione ad oggetti che non riesco a cogliere.
    La cosa strana č che ho provato a fare degli insert direttamente dal costruttore della mia classe e funzionano, la stessa query invece da errore se richiamata dall'esterno.

    Il codice che richiama la mia classe č fa eseguire la funzione č il seguente:

    Codice PHP:
    class leTele
    {
        private 
    $dbLink;
        public 
    $arrayRow = -1;
        private 
    $dataArray = array();
        
        public function 
    __construct()
        {
            
    $this->dbLink = new MysqlClass();
        }
        
        public function 
    loadTela($nomeTela$descrizione$hDim$wDim$portfPos$telePos$contattiPos$homePos$fotoPos$telaPath$h_imm$w_imm)
        {    
            
    $this->dbLink->Query("INSERT INTO `tele` (`nometela`, `descrizione`, `w_dim`, `h_dim`, `portf_pos`, `tele_pos`, `contatti_pos`, `home_pos`, `foto_pos`, `telaPath`, `h_imm`, `w_imm`) VALUES ('$nomeTela', '$descrizione', '$wDim', '$hDim', '-1', '-1', '-1', '-1', '-1', '$telaPath', '$h_imm', '$w_imm'); "false);
        }

    mentre l'errore contenente la query risultatnte č il seguente:

    codice:
    Error: q: INSERT INTO `tele` (`nometela`, `descrizione`, `w_dim`, `h_dim`, `portf_pos`, `tele_pos`, `contatti_pos`, `home_pos`, `foto_pos`, `telaPath`, `h_imm`, `w_imm`) VALUES ('ffff', 'ffffff', '555', '5555', '-1', '-1', '-1', '-1', '-1', 'foto/bandierex.jpg', '217', '421'); | E: | En:
    ed ecco infine la classe di colleamento a mysqli

    Codice PHP:
     
     
       
    class MysqlClass
       
    {
          
    //Parametri per la connessione al database
          
    private $nomehost;
          private 
    $nomeuser;
          private 
    $password;
          private 
    $nomedb;
          private 
    $mysqli;
          
          
    //variabile di controllo delle connessioni attive
          
    private $attiva=false;
          private 
    $arry;
          private 
    $myResult;
          
          public function 
    __construct()
          {
              
    $nomehost $GLOBALS['host'];
              
    $nomeuser $GLOBALS['user'];
                
    $password $GLOBALS['pswd'];
                
    $nomedb $GLOBALS['db'];
              
    $this->mysqli = new mysqli($nomehost$nomeuser$password$nomedb);
              
              
    $this->connetti();
          }
          
          
    //funzione di connessione
          
    private function connetti()
          {
              if (
    $mysqli->connect_error) {
               
    // notifica in caso di errore
                    
    echo "Errore in connessione al DBMS: ".$mysqli->connect_error;
               
    // interruzione delle esecuzioni i caso di errore
                        
    exit();
              }
              
              return 
    $this->attiva;
          }
          
          
    //funzione di disconnessione
          
    public function disconnetti()
          {
              if(
    $this->attiva)
              {
                  if(
    $mysqli->close())
                  {
                      
    $this->attiva false;
                      return 
    true;
                  }
              }
              return 
    false;
          }
          
          
    //Passaggio della variabile di connessione
          
    public function var_con()
          {
              if(
    $this->attiva)
              {
                  return 
    $connessione;
              }
              return 
    false;
          }
          
          public function 
    fetch()
          {
               
    $result $this->myResult->fetch_array(MYSQLI_BOTH);
               return 
    $result;
          }
          
          
    //funzione query
          
    public function query($query$fetch)
          {
              
    $this->myResult $this->mysqli->query($query) or die("Error: q: ".$query." | E: ".$mysqli->error." | En: ".$mysqli->errno);

              if(
    $fetch==true
              {
                  
    $result=$this->fetch();
                  return 
    $result;
              }
              return 
    true;
          }
          
          public function 
    singleQuery($query)
          {
              
    $this->mysqli->query($query) or die("Error: q: ".$query." | ".$mysqli->error." | ".$mysqli->errno);
              return 
    true;
          }
          
          public function 
    queryAll($query)
          {
                   
    $this->myResult $this->mysqli->query($query) or die("Error: q: ".$query." | ".$mysqli->error);
                
    $result $this->myResult->fetch_all();
                return 
    $result;

          }
              
       } 

  2. #2
    Ciao,

    Puoi postare anche il codice che usi per richiamatare dall'esterno la query di INSERT e che di da errore , compreso la creazione dell'oggetto derivante dalla classe leTele ?

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    18
    ciao earth.web2,
    allora il codice che richiama la classe MysqlClass č il primo, ed p quello che richiama poi la query INSERT, invece il codice che richiama leTele e quindi il metodo loadTela č il seguente

    Codice PHP:
    include "../class/mysql_func.php";
    include 
    "../class/tele.php";



    if(!isset(
    $_GET['cmd']))
        die(
    "COMANDO NON PRESENTE");

    //echo "Nome: ".$_POST['name']." |-> h_dim: ".$_POST['h_dim']." |-> w_dim: ".$_POST['w_dim']." |-> descrizione: ".$_POST['descrizione'];    

    switch($_GET['cmd'])
    {
        case 
    '1'addNewTela();break;    // ADD
        
    case '2'popMover();break;
        case 
    '3'mover();break;
    }


    function 
    addNewTela()
    {
        
        
    $tele = new leTele();
    $ctime 0;
    foreach (
    glob('../up_server/php/files/*.jpg') as $file)
    {
        if (
    $ctime filectime($file))
        {
            
    $match $file;
            
    $ctime filectime($file);
        }
    }

    //print $match;

    $file $match;
    $ext strtolower(end(explode("."basename$file ))));
    $filename basename($file".$ext");
    $dir str_replace("$filename.$ext"""$file);

    if (
    copy($file,"../imm/foto/$filename.$ext")) {unlink($file);}
        else die(
    "Impossibile copiare il file");
        
    list(
    $w_imm$h_imm$type$attr) = getimagesize("../imm/foto/$filename.$ext");

    $tele->loadTela($_POST['name'],$_POST['descrizione'],$_POST['h_dim'],$_POST['w_dim'], -1, -1, -1, -1, -1"foto/$filename.$ext"$h_imm$w_imm);

    mentre il codice che richiama questo č banalmente un form, con un pulsante submit.

    Gazie mille!

  4. #4
    Utente di HTML.it L'avatar di homerbit
    Registrato dal
    Dec 2005
    residenza
    Roma
    Messaggi
    1,380
    nella function singleQuery($query)
    sostituisci
    Codice PHP:
    $this->mysqli->query($query) or die("Error: q: ".$query." | ".$mysqli->error." | ".$mysqli->errno); 
    con
    Codice PHP:
    $this->mysqli->query($query) or die("Error: q: ".$query." | ".$this->mysqli->error." | ".$this->mysqli->errno); 
    in modo da stampare gli errori
    If you think your users are idiots, only idiots will use it. DropBox

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2007
    Messaggi
    18
    sono davvero, davvero un cretino.....

    ti ringrazio per la pazienza e scusa se ti ho ftto perder tempo per dei banali puntatori.... Ho sostituito ed ora va! Grazie mille!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.