2017-04-19 5 views
0

Ich habe Ubuntu 16.10 x86_64 x86_64. Ich habe LAMP installiert, um in PHP zu programmieren und Datenbanken zu erstellen. In meinem PHP-Programm möchte ich eine Verbindung zu meiner lokalen Datenbank herstellen, um eine Tabelle (in HTML) mit den Daten einer beliebigen Zeile der Tabelle zu erstellen. Das Problem ist, dass wenn ich die PHP-Datei (localhost/file.php) über Firefox öffnet, der Browser nichts berechnet. Wenn während der Verbindung mit der Datenbank ein Fehler aufgetreten ist, hätte es etwas im Browser gedruckt. Hier ist der Code:Keine Datenbankverbindung ohne Fehler

<!DOCTYPE html> 
<html> 

<head><title> SQL & PHP </title></head> 

<body> 

<?php 


$db = mysql_connect("localhost", "root", "password") 
     or die ("Non riesco a creare la connessione"); 


mysql_select_db("scuola") 
     or die ("Non trovo il DB"); 

$sql = "SELECT id_utente, nome_utente, password_utente, conta_pres FROM utenti WHERE conta_pres <> 0"; 

$ris = mysql_query($sql) or die ("Query fallita!"); 

echo "<TABLE><TR><TH>ID utente <TH> Nome utente <TH>Password<TH>Contatore visite</TR>"; 

while ($riga= mysql_fetch_array($ris)) 
{ 
     echo ("<TR>"); 
     echo "<TD>" . $riga["id_utente"]; 
     echo "<TD>" . $riga["nome_utente"]; 
     echo "<TD>" . $riga["password_utente"]; 
     echo "<TD>" . $riga["conta_pres"]; 

} 

mysql_close(); 
?> 
</body> 

</html> 

ich die Syntax geprüft (unter Verwendung einer Website) des Codes und thare sind keine Probleme, auch weil ich dieses durch ein Buch kopiert. Ich habe gelesen, dass mysql_connect veraltet ist, also habe ich es durch new mysqli_connect ersetzt, aber der Fehler bleibt: weiße Seite. Ich habe versucht, 2 Echo, eins vor der Verbindungsfunktion und eins danach. Nur das erste Echo wird auf dem Bildschirm gedruckt. Ich habe versucht, in dem Terminal sudo eingeben apt-get install php5-mysql, aber es ist ein Fehler: Das "php5-mysql" Paket ausgeführt wird nicht installieren

Kann mir jemand helfen, bitte?

+3

Verwenden Sie das mysql_ nicht * Funktionen. mysql_ * -Funktionen sind ab PHP 5.5.0 veraltet und werden ab PHP 7.0.0 entfernt. Ändern Sie Ihren Code, um [PDO] (https://secure.php.net/manual/en/pdo.prepared-statements.php) oder [mysqli] (http://php.net/manual/en/mysqli) zu verwenden. quickstart.prepared-statements.php) statt. – aynber

+0

Wenn Sie eine gerade weiße Seite erhalten, überprüfen Sie die Serverfehlerprotokolle auf den Grund. – aynber

+0

Ich denke, mysql_connect ist über 5.6 veraltet. Also ist es wahrscheinlich nicht einmal ein Ding in php-7 –

Antwort

1

Zuerst mysqli anstelle von mysql verwenden.

Ich denke, ich habe das Problem gefunden. Wenn Sie mysqli_select_db aufrufen, erwartet es 2 Parameter, von denen Sie nur einen angeben. Obwohl Sie die Datenbankverbindung $db festgelegt haben, müssen Sie angeben, aus welcher Datenbank Sie den Datenbanknamen auswählen möchten.

So mysqli_select_db($db, "scuola") sollte den Trick tun.

Und unten die Verbindung schließen, die angibt, welche Verbindung geschlossen werden soll. In Ihrem Fall ist es: mysqli_close($db);

<!DOCTYPE html> 
<html> 

    <head><title> SQL & PHP </title></head> 

    <body> 

     <?php 


     $db = mysqli_connect("localhost", "root", "password") 
      or die ("Non riesco a creare la connessione"); 


     mysqli_select_db($db, "scuola") // see this line 
      or die ("Non trovo il DB"); 

     $sql = "SELECT id_utente, nome_utente, password_utente, conta_pres FROM utenti WHERE conta_pres <> 0"; 

     $ris = mysql_query($sql) or die ("Query fallita!"); 

     echo "<TABLE><TR><TH>ID utente <TH> Nome utente <TH>Password<TH>Contatore visite</TR>"; 

     while ($riga= mysql_fetch_array($ris)) 
     { 
      echo ("<TR>"); 
      echo "<TD>" . $riga["id_utente"]; 
      echo "<TD>" . $riga["nome_utente"]; 
      echo "<TD>" . $riga["password_utente"]; 
      echo "<TD>" . $riga["conta_pres"]; 

     } 

     mysqli_close($db); // see this line 
     ?> 
    </body> 

</html>