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

    contenuto delle variabili dopo update mysql

    migrando da asp a php mi sto imbattendo in comportamenti diversi tra quanto ottenevo con ASP e quanto non ottengo con PHP

    Ho questo codice php:
    Codice PHP:
    $TAB000_sql $data->query("SELECT TAB000_r_cnt FROM TAB000 WHERE TAB000_id = $w_TAB000_id_ric");
    if(
    mysql_num_rows($TAB000_sql) > 0){
        
    $TAB000_obj $data->estrai($TAB000_sql);
        
    $w_TAB000_r_cnt $TAB000_obj->TAB000_r_cnt// a questo punto contiene 5

        
    If ($wpm000_tipope == "W") {
                
    $w_TAB000_r_cnt        $w_TAB000_r_cnt 1// quindi 6
                
    $TAB000_sql $data->query("UPDATE TAB000 SET 
                                                             TAB000_r_cnt    = 
    $w_TAB000_r_cnt
                                                             WHERE TAB000_id = 
    $w_TAB000_id_ric");
        echo 
    $TAB000_obj->TAB000_r_cnt// contiene 5 !!!!
        
    }

    Perchè dopo l'update il campo contiene 5?
    Ho provato ad inserire prima dell'echo:
    Codice PHP:
    $TAB000_obj $data->estrai($TAB000_sql); 
    Ma il risultato è identico.
    Vorrei capire come ragiona php e mysql, perchè in asp le variabili del db erano disponibili sino a quando non disconnettevo il db.
    Perchè i campi che ho aggiornato nel db mysql non mi risultano avvalorati nella variabile $TAB000_obj?
    grazie
    Pino

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,447
    Tu hai incrementato di 1 $w_TAB000_r_cnt, non $TAB000_obj->TAB000_r_cnt, che quindi ha mantenuto il valore iniziale, 5.

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Tu hai incrementato di 1 $w_TAB000_r_cnt, non $TAB000_obj->TAB000_r_cnt, che quindi ha mantenuto il valore iniziale, 5.
    Ma quando faccio l'update trasferisco il valore dal campo $w_TAB000_r_cnt al campoTAB000_r_cnt
    la mia domanda infatti è: come mai l'area di memoria relativa al campo TAB000_r_cnt non viene avvalorata?

    e anche se faccio $TAB000_obj = $data->estrai($TAB000_sql); non cambia nulla!

  4. #4
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Tu hai incrementato di 1 $w_TAB000_r_cnt, non $TAB000_obj->TAB000_r_cnt, che quindi ha mantenuto il valore iniziale, 5.
    Ma non funziona anche se faccio:
    Codice PHP:
    $TAB000_obj $data->estrai($TAB000_sql); 
    echo 
    $TAB000_obj->TAB000_r_cnt// continua a contenere 5 !!!! 

  5. #5
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,447
    Premessa: $w_TAB000_r_cnt è una cosa, $TAB000_obj->TAB000_r_cnt è un'altra.
    Codice PHP:
    // $TAB000_sql sarà un result set, ma non capisco perché fai questa cosa se poi
    // sovrascrivi la variabile senza usarla
    $TAB000_sql $data->query("SELECT TAB000_r_cnt FROM TAB000 WHERE TAB000_id = $w_TAB000_id_ric");

    if(
    mysql_num_rows($TAB000_sql) > 0)
    {
        
    // $TAB000_obj è un oggetto contenente il risultato della query
        
    $TAB000_obj $data->estrai($TAB000_sql);

        
    // a $w_TAB000_r_cnt assegni il contenuto di $TAB000_obj->TAB000_r_cnt
        // ovvero il valore 5
        
    $w_TAB000_r_cnt $TAB000_obj->TAB000_r_cnt;

        If (
    $wpm000_tipope == "W"
        {
            
    // STAI INCREMENTANDO DI 1 $w_TAB000_r_cnt, NON $TAB000_obj->TAB000_r_cnt !!!
            // quindi $w_TAB000_r_cnt vale 6, mentre $TAB000_obj->TAB000_r_cnt continua a valere 5 !!!
            
    $w_TAB000_r_cnt $w_TAB000_r_cnt 1;

            
    $TAB000_sql $data->query("UPDATE TAB000 SET 
                                                         TAB000_r_cnt    = 
    $w_TAB000_r_cnt
                                                         WHERE TAB000_id = 
    $w_TAB000_id_ric");
            
            echo 
    $TAB000_obj->TAB000_r_cnt// contiene 5 !!!!
            // ed è giusto che sia ancora 5, perché non l'hai modificata questa variabile
            // tu hai modificato $w_TAB000_r_cnt
            // se fai di nuovo la select conterrà 6, ma finché non la fai conterrà ancora il valore precedente
        
    }


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.