Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    Recuperare numero righe corrispondenti ma non affette!

    Ciao a tutti! Normalmente quando eseguo un UPDATE su una tabella selezionado + id uso questo metodo:

    codice:
    UPDATE miaTab SET mioCampo1='ciao', mioCampo2='Veronica' WHERE idCampo NOT IN (2,4,3,43, 34)
    Questo è un banale esempio di aggiornamento di TUTTI i record che NON hanno gli id che possiedo!

    Per recuperare le righe affette da tale query uso:

    Codice PHP:
    mysql_affected_rows() 
    e fin qui tutto ok!
    Da poco però ho notato che mySQL ha 2 tipi di conteggio!

    Ovvero se quando eseguo la query scritta sopra le righe che rispondono al criterio HANNO GIA' il valore "ciao" e "Veronica" nei campi appositi la riga non viene segnata come "affected" ma come "matched"

    Tant'è che se eseguo la query nel mio WorkBench di MySQL mi restituisce:

    0 row(s) affected Rows, matched: 5, Changed: 0, Warnings: 0

    Ora la cosa è anche utile se si vuole vedere il lato "programmatico" ma a me serve sapere cmq quante righe corrispondono al criterio (a prescindere che poi vengano oggettivamente modificate).

    Non esiste una cosa tipo: mysql_matched_rows() o similari?

    Grazie a tutti

  2. #2
    Prova così anche se è un accrocchio:

    Codice PHP:
    <?php
    function getMatched($connection) {
        
    preg_match('/(matched: )(\d+)/'$connection->info$matches);
        return 
    $matches[2];
    }

    $server = ...
    $user = ...
    $pass = ...
    $db = ...
    $mysqli = new mysqli($server$user$pass$db);

    $query "UPDATE table SET field = '...' WHERE ...";

    $result $mysqli->query($query);

    echo 
    "Matched: ".getMatched($mysqli);
    ?>
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3

    Re: Recuperare numero righe corrispondenti ma non affette!

    Originariamente inviato da Veronica80
    Ora la cosa è anche utile se si vuole vedere il lato "programmatico" ma a me serve sapere cmq quante righe corrispondono al criterio (a prescindere che poi vengano oggettivamente modificate).
    In base a quanto dici la query corretta è:

    Codice PHP:
    SELECT FROM miaTab WHERE idCampo NOT IN (2,4,3,4334
    Questa volta, più che un voto.. è favoreggiamento.

  4. #4
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Satisfal: Oddio è un po complicata come cosa!

    Al_katraz984: lo so che è corretta...non è la query il problema infatti!

  5. #5
    Originariamente inviato da Veronica80
    Satisfal: Oddio è un po complicata come cosa!
    In che senso?

    Ti basta la funzione getMatched()
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Originariamente inviato da Veronica80
    Al_katraz984: lo so che è corretta...non è la query il problema infatti!
    ti sei accorta che la query che ti ho proposto io è diversa dalla tua.....?
    Questa volta, più che un voto.. è favoreggiamento.

  7. #7
    Con un minimo di iniziativa lo adatti anche all'estensione mysql piuttosto che a mysqli.

    Codice PHP:
    <?php
    function getMatched($info) {
        
    preg_match('/(matched: )(\d+)/'$info$matches);
        return 
    $matches[2];
    }

    $connect mysql_connect(xxxyyyzzz);
    $db mysql_select_db(database$connect);

    $query "UPDATE table SET field = ... WHERE ...";

    $result mysql_query($query) or die(mysql_error());

    echo 
    "Matched: ".getMatched(mysql_info());
    ?>
    Non capisco la difficoltà!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Satisfal: Non è che non lo capisco o lo trovo difficile è che tirar su tutto quel codice mi faccio una semplice SELECT come consigliato da Al_katraz984 che mi darà il totale delle righe matched dalle quali sottraggo poi quelle affected!

    Al_katraz984: idem volevo evitare di fare righe e righe!

    La mia domanda era appunto se non esistesse una funziona comodissima come mysql_affected_rows() da poter utilizzare e via! :P

    Come ottenere il numero creandomi codice vario lo so

  9. #9
    Originariamente inviato da Veronica80
    Satisfal: Non è che non lo capisco o lo trovo difficile è che tirar su tutto quel codice mi faccio una semplice SELECT come consigliato da Al_katraz984 che mi darà il totale delle righe matched dalle quali sottraggo poi quelle affected!
    "...tirar su tutto quel codice..."?!?!?! Ma cosa stai dicendo?!

    Codice PHP:
    ...
    $matched preg_match('/(matched: )(d+)/'mysql_info(), $matches);
    ... 
    Vabbè...stupido io che sto qui ad insistere!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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 © 2025 vBulletin Solutions, Inc. All rights reserved.