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

    Fatal error: Call to a member function prepare() on null in

    Salve ragazzi
    Spero di postare nel luogo giusto e di seguire tutte le procedure descritte per postare un nuovo post.
    Nel caso di errore chiedo scusa anticipatamente e rifarò nuovamente tutto.

    Allora io e un mio amico stiamo lavorando su un progetto ma ci siamo bloccati da qualche giorno su un errore, non siamo degli esperti di php quindi spero di non dire troppe sciocchezze.

    Veniamo al dunque, a noi risulta questo errore :

    Fatal error: Call to a member function prepare() on null in /membri/progettoditelematica2019/index.php on line 18

    il codice a cui si fa riferimento è questo

    Codice PHP:
    <?php

    include 'connessione.php';
    //require_once 'sessioni.php';//include una volta sola il metodo sessioni
    session_start();
    if (isset(
    $_SESSION["nickname"])){ //se risulta già un cookie loggato, entra
        
    header("location: visualizzafatture.php");


        exit;
    }

    if (isset(
    $_POST["submitx"])){ //se è stato premuto il pulsante submitx, manda la query al db
        
    $nickname $_POST['nickname'];
        
    $password $_POST['password'];

      
    //  $query = $mysqli->query("SELECT * FROM Utenti WHERE Nickname = '$nickname' AND Password = '$password'");
      //  $query2 = $mysqli->query("SELECT * FROM Fornitore WHERE Nickname = '$nickname' AND Password = '$password'");

        
    $query $mysqli->prepare("SELECT * FROM Utenti WHERE Nickname = ? AND Password = ?");
        
    $query2 $mysqli->prepare("SELECT * FROM Fornitore WHERE Nickname = ? AND Password = ?");

      
        
    $query->bind_param('ss',$nickname,$password);
        
    $query2->bind_param('ss',$nickname,$password);
      
        
    $query->execute();
      
        
    //ho deciso di mettere in sicurezza l'accesso al sito utilizzato i prepared statements
        //senza, l'accesso al sito poteva essere messo a rischio semplicemente manomettendo la query
        //ed inserendo ' or ''=' nello username e password.
      
        
    if($query->fetch()) {//query->num_rows
            
    echo "Accesso consentito";
            
    $_SESSION["nickname"] = $nickname;
            
    $_SESSION["fornitore"] = false;
            
    header("location: visualizzafatture.php");
            exit();
        }
        else{
            
    $query->close();
            
    $query2->execute();
            echo 
    "Accesso rifiutato";
        }
      
        if(
    $query2->fetch()){//query2->num_rows
            
    echo "Accesso consentito";
            
    $_SESSION["nickname"] = $nickname;
            
    $_SESSION["fornitore"] = true;
          
            
    header("location: visualizzafatture.php");
            exit();
        }
      
        else {
            echo 
    "Accesso rifiutato";
        }
      
    }

    $art='
    __________                   .___             __       _____                   __
    \______   \_______  ____   __| _/_ __   _____/  |_    /     \ _____    _______/  |_  ___________
     |     ___/\_  __ \/  _ \ / __ |  |  \_/ ___\   __\  /  \ /  \\\\__  \  /  ___/\   __\/ __ \_  __ \
     |    |     |  | \(  <_> ) /_/ |  |  /\  \___|  |   /    Y    \/ __ \_\___ \  |  | \  ___/|  | \/
     |____|     |__|   \____/\____ |____/  \___  >__|   \____|__  (____  /____  > |__|  \___  >__|
                                  \/           \/               \/     \/     \/            \/
    '
    ;

    ?>

    <html>
        <body>
                <center><h1>Benvenuto in</h1></center>
                <center>
                <table>
                <tr><td>
                <pre style="font-family: 'Courier New', Courier, monospace"><?php echo $art?></pre>
                </tr></td>
                </table>
                <h4>Entra in Product Master per trovare con noi le offerte migliori</h4>

                </center>    
                                                                                                                                                </p></center>
                <br>
                <form action="index.php" method="POST">
                  
                      <center>
                          <table>
                              <tr><td>Username:</td><td><input type="text" name="nickname"></td></tr>
                              <tr><td></td><td></td></tr>                        
                              <tr><td>Password:</td><td><input type="password" name="password"></td></tr>
                          </table>
                      </center>
                    
                        <center><input type="submit" name="submitx" id="submit" value="login"></center>
                      
                </form>
              
        </body>
    </html>
    vi metto anche il codice di connessione.php

    Codice PHP:
    <?php
    $mysqli 
    = new mysqli('localhost','root''123qwe'"Product_Master");

    if (
    $mysqli->connect_error) { //connetto al database
        
    die('Errore di connessione (' $mysqli->connect_errno ') ' $mysqli->connect_error);
        exit();
    }
    else {
        
    //echo '<center><p>' . 'Connesso. ' . $mysqli->host_info . '</p></center>';
    }

    class 
    gestioneprodotti
    {
    }
    il sito su cui noi stiamo lavorando è questo se volete vedere voi di persona

    http://progettoditelematica2019.alte....org/index.php

    Cosa significa quell'errore li? ci siamo impantanati mannaggia !!

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Sembra che $mysqli non sia istanziato correttamente.

    Fai un var_dump($mysqli) prima della riga che ti da errore e vediamo cosa da.

    p.s. quando istanzi mysql usa tutti gli apici dello stesso tipo:
    codice:
    $mysqli = new mysqli('localhost','root', '123qwe', 'Product_Master');

  3. #3
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    Sembra che $mysqli non sia istanziato correttamente.

    Fai un var_dump($mysqli) prima della riga che ti da errore e vediamo cosa da.

    p.s. quando istanzi mysql usa tutti gli apici dello stesso tipo:
    codice:
    $mysqli = new mysqli('localhost','root', '123qwe', 'Product_Master');

    quindi il codice diventa cosi???
    Codice PHP:
    var_dump($mysqli);
    $query $mysqli->prepare("SELECT * FROM Utenti WHERE Nickname = ? AND Password = ?");
    $query2 $mysqli->prepare("SELECT * FROM Fornitore WHERE Nickname = ? AND Password = ?"); 
    non ho capito la parte degli apici scusa, cosa intendi?

    ho messo quella parte del codice ma non cambia nulla stesso errore purtroppo

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Si esatto, eseguendolo dovrebbe stamparti quello che c'è dentro la variabile $mysqli.

    Il discorso degli apici è per questa riga:
    codice:
    $mysqli = new mysqli('localhost','root', '123qwe', "Product_Master");

    dovrebbe essere così:
    codice:
    $mysqli = new mysqli('localhost','root', '123qwe', 'Product_Master');

    Con gli apici singoli anche nell'ultimo parametro.

  5. #5
    ah ok.
    Ho effettuato quella modifica che mi hai chiesto e non cambia niente in piu non stampa nulla anche mettendo prima dell'errore var_dump($mysqli);
    mmmm

    l'errore me lo da nel file index.php cioè nel primo codice che ho pubblicato

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2016
    Messaggi
    783
    Come pensavo, ora prova a mettere lo stesso var_dump($mysqli) dopo:
    codice:
    $mysqli = new mysqli('localhost','root', '123qwe', 'Product_Master');

    Se continua a non darti nulla il problema è nel codice della riga precedente, controlla bene che tutti i parametri siano corretti, anche le lettere maiuscole e minuscole.

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2019
    Messaggi
    12
    Prova a connetterti a database on questo codice

    codice:
    $servername = "127.0.0.1";
    $username = "root";
    $password = "root";
    $db_name = "nome_databse";
    
    // mi connetto al server database
    $conn = mysqli_connect($servername, $username, $password, $db_name);
    
    // controllo connessione
    if (!$conn) {
        die("Connessione al Database PhpMyAdmin fallita.<br>Codice errore: " . mysqli_connect_error());
    }

  8. #8
    Quote Originariamente inviata da degadea Visualizza il messaggio
    Prova a connetterti a database on questo codice

    codice:
    $servername = "127.0.0.1";
    $username = "root";
    $password = "root";
    $db_name = "nome_databse";
    
    // mi connetto al server database
    $conn = mysqli_connect($servername, $username, $password, $db_name);
    
    // controllo connessione
    if (!$conn) {
        die("Connessione al Database PhpMyAdmin fallita.<br>Codice errore: " . mysqli_connect_error());
    }
    ho sostituito il codice che mi hai proposto nel file connessione.php con questo codice
    codice:
    <?php
    $servername = "127.0.0.1";
    $username = "root";
    $password = "123qwe";
    $db_name = "Product_Master";
    
    
    // mi connetto al server database
    $conn = mysqli_connect($servername, $username, $password, $db_name);
    
    
    // controllo connessione
    if (!$conn) {
        die("Connessione al Database PhpMyAdmin fallita.<br>Codice errore: " . mysqli_connect_error());
    }
    
    
    class gestioneprodotti
    {
    }
    però non cambia nulla rimane sempre a quell'errore
    Ultima modifica di Lucedelgiorno; 25-07-2019 a 10:02

  9. #9
    Quote Originariamente inviata da M4V1 Visualizza il messaggio
    Come pensavo, ora prova a mettere lo stesso var_dump($mysqli) dopo:
    codice:
    $mysqli = new mysqli('localhost','root', '123qwe', 'Product_Master');

    Se continua a non darti nulla il problema è nel codice della riga precedente, controlla bene che tutti i parametri siano corretti, anche le lettere maiuscole e minuscole.

    sai una cosa, ho rimesso var_dump($mysqli); prima della riga del codice che mi da errore, cioè come mi hai detto la prima volta e ora mi da NULL e poi stampa l'errore ''Fatal error: Call ...... ''

  10. #10
    ok ragazzi sto risolvendo sono passate molte ore di programmazione e di aggiunta in più al codice presente, potete chiudere questo post

Tag per questa discussione

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.