Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302

    Porting da mysql a mysqli

    Un saluto a tutta la community,
    avrei una domanda riguardo il porting da mysql a mysqli, in sostanza qualche anno fa realizzai un piccolo gestionale scritto tutto in mysql. Adesso, essendo proprio alle strette, avrei necessità di migrare il codice del gestionale dal vecchio stile procedurale al nuovo stile sempre procedurale ma mysqli.

    Trattandosi di circa 50 file, volevo evitare di modificare a mano tutto il codice su GitHub ho trovato MySQLConverterTool, qualcuno di voi l'ho ha mai utilizzato e se no secondo voi esiste la possibilità di modificare gli script php senza mettere mano a tutti i file ?

    Ragazzi confido nel vostro supporto
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Partendo dall'inizio, se passo da mysql (funzionante) a mysqli ottendo "Errore nella query"

    Codice PHP:
    <?php
    $host 
    '127.0.0.1';
    $user 'root';
    $password 'admin';
    $dbname 'iykqltua_upgrade'// Name of database
    $con mysqli_connect($host$user$password$dbname);
    if (!
    $con) {
        echo 
    'Errore di connessione (' mysqli_connect_errno() . ') ' mysqli_connect_error();
    }

    if(
    $_POST) {
        
    effettua_login();
    } else {
        
    mostra_form();
    }

    function 
    mostra_form()
    {
        
    // mostro un eventuale messaggio
        
    if(isset($_GET['msg'])) {
            echo 
    '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
        }
        
    ?>

        <!DOCTYPE html>
    <html >
      
      <head>
        <meta charset="UTF-8">
        <title>Porting Mysql Mysqli</title>
        <link rel="icon" href="favicon.ico">
        <link rel="stylesheet" href="css/style.css">
        <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
        <script src="js/index.js"></script>
      </head>

        <body>

        <div class="wrapper">
        <div class="container">
            <h1>Porting Mysql Mysqli</h1>
            <form id="form_login" name = "form_login" "class="form" method="post" action="">
                <input type="text" placeholder="Username" name="username">
                <input type="password" placeholder="Password" name="password">
                <button type="submit" id="login-button">Accedi</button>
            </form>
        </div>
        
        <ul class="bg-bubbles">
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
            <li></li>
        </ul>
    </div>
        
        </body>
    </html>

        <?
    }

    function 
    effettua_login()
    {
        
    // recupero il nome e la password inseriti dall'utente
        
    $username      trim($_POST['username']);
        
    $password         trim($_POST['password']);
        
        
    // verifico se devo eliminare gli slash inseriti automaticamente da PHP
        
    if(get_magic_quotes_gpc()) {
            
    $username          stripslashes($username);
            
    $password          stripslashes($password);
        }

        
    // verifico la presenza dei campi obbligatori
        
    if(!$username || !$password) {
            
    $messaggio urlencode("Non hai inserito il nome o la password");
            
    header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
            exit;
        }
        
    // effettuo l'escape dei caratteri speciali per inserirli all'interno della query
        
    $username         mysqli_real_escape_string($con,$username);
        
    $password         mysqli_real_escape_string($con,$password);    

        
    // preparo ed invio la query
        
    $query mysqli_query ("SELECT * FROM utenti WHERE username = '$username' AND password = MD5('$password')");
        
    $result mysqli_query($query);
        
        
    // controllo l'esito
        
    if (!$result) {
            die(
    "Errore nella query $query: " mysqli_error());
        }

        
    $record mysqli_fetch_array($con,$result);

        if(!
    $record) {
            
    $messaggio urlencode('Nome utente o password errati');
            
    header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
            
        } else {
            
    session_start();
            
    $_SESSION['username'] = $record['username'];
            
    $messaggio urlencode('Login avvenuto con successo');
            
    header("location: home.php");
    }
    }
    ?>
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  3. #3
    Utente di HTML.it L'avatar di brodik
    Registrato dal
    Jan 2009
    Messaggi
    764
    prova da
    Codice PHP:
     $query mysqli_query ("SELECT * FROM utenti WHERE username = '$username' AND password = MD5('$password')");
    $result mysqli_query($query); 
    a
    Codice PHP:
     $query "SELECT * FROM utenti WHERE username = '$username' AND password = MD5('$password')";
    $result mysqli_query($query); 
    eXvision

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Con mysqli_query c'è un parametro in più. Guardare la documentazione.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Buongiorno brodik,
    grazie mille per la risposta, in sostanza la query cosi come suggerita da te mi riporta ad una pagina bianca

    Codice PHP:
     $query "SELECT * FROM utenti WHERE username = '$username' AND password = MD5('$password')";
    $result mysqli_query($query); 
    [/QUOTE]


    Ad ogni modo grazie per l'interessamento dimostrato
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    302
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Con mysqli_query c'è un parametro in più. Guardare la documentazione.
    Ciao badaze,
    come è giusto e doveroso che sia, ringrazio anche te per la risposta.

    Purtroppo non ho risolto nemmeno utilizzando il parametro che fa riferimento alla connessione al db.

    Grazie lo stesso
    Se volete che la funzione di un programma non venga scoperta dall'utente, descrivetela nella documentazione...

  7. #7
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,360
    Come spesso accade non c'é un solo errore. L'aggiunta del parametro é tassativa.
    Prova a stampare la query a video e poi ad eseguirla con phpmyadmin.
    Ultima modifica di badaze; 05-04-2017 a 12:51
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  8. #8
    Richiama sempre la connessione al DB; qua manca:
    codice:
     $result = mysqli_query($query);
    come qua va bene:
    codice:
    $record = mysqli_fetch_array($con,$result);

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.