Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [PHP/MYSQL]problemi con mysql_insert_id()

    Ciao a tutti.
    Ho un problema con l'utilizzo del metodo mysql_insert_id() . Da quanto ho capito questo metodo dovrebbe ritornare il valore AUTO_INCREMENT dell'ultima INSERT effettuata nell ultima connessione al database, ma non so perchè
    mi restituisce sempre 0 , come se nella insert che effetuo non ci sia un valore AUTO_INCREMENT.

    Allora, ho una tabella OGGETTO col campo ID autoincrement

    +-------------+---------------------------+-----+---------+------------+------------------+
    | Field | Type | Null | Key | Default | Extra |
    +-------------+---------------------------+-----+---------+------------+------------------+
    | id | bigint(20) unsigned | NO | PRI | NULL | auto_increment |

    qui posto il codice
    Codice PHP:

     
    public function salvaNuovoOggetto($nuovo,&$request){
            
            require_once 
    'Settings.php';

            
    //istanzio classe mysqli
            
    $mysqli = new mysqli();

            
    //connessione al database server
            
    $mysqli->connect(Settings::$db_host,
                            
    Settings::$db_user,
                            
    Settings::$db_password,
                            
    Settings::$db_name);

            
    //verifico la presenza di errori
            
    if($mysqli->connect_errno!=0){
              
                
    //gestione errore
                
    $idErrore $mysqli->connect_errno;
                
    $msg=$mysqli->connect_error;
                
    error_log("Errore nella connessione al server
                         
    $idErrore : $msg",0);
                echo 
    "Errore nella connessione $msg";
            }else{

                
    //assegnamento valori alle variabili
                
    $user $_SESSION[BaseController::user];
                
    $username_user=$user->getUsername();
                
    $password_user=$user->getPassword();
                
    $tipologia_id UserCrea::getIdTipologia($request['oggettotipodate']);
                
    $catalogo_idUserCrea::getIdCatalogo($username_user,$password_user) ;
                
    $nomeOggetto=$request['nomeprodottodate'];
                
    $schermo=$request['schermoparamdate'];
                
    $ram=$request['RAMparamdate'];
                
    $cpu=$request['CPUparamdate'];
                
    $hd$request['HDparamdate'];
                
    $so$request['SOparamdate'];
                
    $descrizione=$request['Descrizparamdate'];
                
    $nArticoli=$request['Numberparamdate'];
                
    $prezzo=$request['Prezzoparamdate'];

                
    //preparo la query di inserimento dei dati DA INSERIRE ID DEI VENDITORI IN $venditori
                
    $query="INSERT INTO oggetto
                            ( id, nomeOggetto, catalogo_id, tipologia_id, 
                              schermo, ram, cpu, hd, so,  descrizione, nArticoli, prezzo,date) 
                        VALUES ( DEFAULT, '
    $nomeOggetto',$catalogo_id,
                                        
    $tipologia_id,'$schermo','$ram','$cpu',
                                       '
    $hd','$so','$descrizione','$nArticoli',$prezzo,CURDATE())";
                
                
    //lancio la query
                
    $result=$mysqli->query($query);

                
    //controllo l'esito della query
                
    if($mysqli->errno 0){
                    
    //errore nell'esecuzione
                    
    error_log("Errore nell'esecuzione della query $mysqli->errno : $mysqli->error",0);
                }else{

                    
    //recupero l'id autoincrement generato da MYSQL per il nuovo record inserito
                    
    $new_oggett_idmysql_insert_id(); 
    Non so perchè mi torna come risultato sempre zero...sicuramente qualcuno mi potrà dare delucidazioni in proposito..

  2. #2
    Hai verificato che il campo nella tabella, dopo la query, abbia un valore numerico e che funzioni l'autoincrement?
    Così a colpo d'occhio, io personalmente nella query INSERT non inserisco mail il campo "id", in quanto svolge il lavoro senza che nessuno glielo indichi di fare.
    Se non ricordo male, se metti come valore "DEFAULT" nel campo viene inserito "0", ed è per questo che mysql_insert_id() ti restituisce sempre "0".

  3. #3
    si si ho già verificato, ho provato anche così come hai detto tu e il risultato è sempre lo stesso.
    Anche perchè mettendo il valore "DEFAULT" non restituisce zero ma bensì il valore corrispondente all' autoincrement..quindi non è quello. Boh, penso ci sia qualcosa di sbagliato nella procedura magari..ma io non riesco proprio a notarlo..

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    ma se usi mysqli, usa

    $mysqli->insert_di()

  5. #5
    Ho provato anche mysqli->insert_id ma quel campo è comunque zero...non ne riesco a venirne a capo..

  6. #6
    Non riesco ad assegnare il valore di $mysqli->insert_id a una variabile.
    Dopo l'esecuzione della query ho visto che il campo $mysqli->insert_id ad esempio prende il valore 69
    ma se nella riga successiva faccio
    Codice PHP:
    $oggetto_id $mysqli->insert_id
    $oggetto_id non prende il valore 69 ma bensì 0 ...perchè??

  7. #7
    è sbagliata la sintassi, quella corretta è questa:

    codice:
    $oggetto_id = $mysqli->insert_id();
    O, ancora meglio:

    codice:
    $link = mysqli_connect ('parametri di connessione');
    
    $query = 'LA TUA QUERY INSERT';
    $mysqli->query($query);
    
    $oggetto_ID = $mysqli->insert_id;

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.