2016-11-18 5 views
-1

Ich bin derzeit in einer Klasse in der Schule und wir müssen unsere MySQL-Datenbank mit unserer Website mit PHP verknüpfen. Ich habe bereits meine Tabellen in MySQL erstellt und befüllt. Mein Professor hat uns diesen Code geschickt, um die Tabelleninformationen auf unseren Webseiten anzuzeigen. Aber wenn ich es laufe, passiert nichts und ich habe nicht genug über PHP gelernt, um zu wissen, warum es nicht funktioniert. Ich habe meinen korrekten Hostnamen, Passwort, ect. Aber es wird nicht funktionieren und wenn er das Tutorial online im Video macht, funktioniert es für ihn.PHP ruft MySQL

Dies ist der Code, den ich verwende.

<html> 
<head> 
<title>Query All Movies from Database</title> 
<body> 

<? 

@ $db = mysql_pconnect("localhost","username","password"); 

if (!$db) 
{ 
    echo "ERROR: Could not connect to database. Please try again later."; 
    exit; 
} 

mysql_select_db("database name"); 

$query = "select * from movie"; 

$result = mysql_query($query); 
$num_results = mysql_num_rows($result); 

echo "<p>Number of movies found: ".$num_results."</p>"; 

for ($i=0; $i < $num_results; $i++) 
{ 
$row = mysql_fetch_array($result); 
echo "<p>"; 
echo htmlspecialchars(stripslashes($row["movieid"])); 
echo "<br>"; 
echo htmlspecialchars(stripslashes($row["title"])); 
echo "<br>"; 
//echo htmlspecialchars(stripslashes($row["directorid"])); 
//echo "<br>"; 
echo htmlspecialchars(stripslashes($row["year"])); 
echo "<br>"; 
echo htmlspecialchars(stripslashes($row["genre"])); 
echo "<br>"; 
echo htmlspecialchars(stripslashes($row["runtime"])); 
echo "<br>"; 
echo htmlspecialchars(stripslashes($row["plotdescription"])); 
echo "<br>"; 
echo htmlspecialchars(stripslashes($row["comments"])); 
echo "<br>"; 
echo "</p>"; 

} 

?> 

</body> 
</html> 

Dies ist die Ausgabe, die ich bekomme. Direkt zum Bildschirm.

Number of movies found: ".$num_results." 
"; for ($i=0; $i < $num_results; $i++) { $row = mysql_fetch_array($result); echo " 
"; echo htmlspecialchars(stripslashes($row["movieid"])); echo " 
"; echo htmlspecialchars(stripslashes($row["title"])); echo " 
"; //echo htmlspecialchars(stripslashes($row["directorid"])); //echo " 
"; echo htmlspecialchars(stripslashes($row["year"])); echo " 
"; echo htmlspecialchars(stripslashes($row["genre"])); echo " 
"; echo htmlspecialchars(stripslashes($row["runtime"])); echo " 
"; echo htmlspecialchars(stripslashes($row["plotdescription"])); echo " 
"; echo htmlspecialchars(stripslashes($row["comments"])); echo " 
"; echo " 

"; } ?> 

Ich habe viel Forschung und lesen Sie die Links und hier ist der Arbeitscode! Danke, dass du mir geholfen hast, mich zu unterrichten !! Diese Seite ist so großartig! Ihr seid fantastisch!

<?php 
$servername = "localhost"; 
$username = "ursername"; 
$password = "password"; 
$dbname = "database name"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT movieid, title, directorid, year, genre, runtime, plotdescription, comments FROM movie"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "Movie ID: " . $row["movieid"]. "<br>Title: " . $row["title"]. "<br>Director ID: " . $row["directorid"]. "<br>Year: " . $row["year"]. "<br>Genre: " . $row["genre"]. "<br>Run Time: " . $row["runtime"]. "<br>Plot Description: " . $row["plotdescription"]. "<br>Comments: " . $row["comments"]." <br><br>"; 
    } 
} else { 
    echo "0 results"; 
} 
$conn->close(); 
?> 
+1

Warum fragen Sie nicht Ihren Professor? Er sollte es besser erklären als wir. –

+5

Für den Anfang, verwenden Sie vollständige vollständige PHP-Tags und entfernen Sie das @, unterdrückt es Fehler, die für Sie hilfreich sein können .. Auf eine andere Anmerkung .. sagen Sie Ihrem Lehrer sollten sie MySQL lehren << I am Ende oder PDO-Methode –

+0

I Ich habe einen Testcode ausgeführt, um sicherzustellen, dass ich mich mit meiner Datenbank verbinden konnte und es funktionierte, so dass alle meine Benutzerinformationen korrekt sind. Aber wenn ich diesen Code ausführe, sagt er mir nicht, ob es verbunden ist oder nicht. Ich spucke nur einen Teil des Codes auf dem Bildschirm. –

Antwort

1

Verwenden Sie diesen Code nicht - dieses Snippet ist in diesen Tagen nicht sicher. Sie sollten eine der neueren Verbindungsmethoden wie PDO oder MySQLI verwenden. Ich bevorzuge das letztere, versuche mit den Docs auf der PHP-Seite deine Sachen einzurichten.

http://php.net/manual/en/function.mysqli-connect.php

Der einzige Grund, warum ich mir vorstellen könnte, dass Ihr Lehrer diese Methode ist die Verwendung entweder sie wissen nicht besser oder sie verwenden eine sehr alte Version von PHP.

Ältere MySQL-Funktionen sind prozedural und werden beim Schreiben in OOP (objektorientierte Programmierung) verworren, weil sie manuell maskiert werden. Die neueren mysqli_ Funktionen arbeiten mit prozeduralen und OOP und unterstützen vorbereitete Anweisungen. Vorbereitete Anweisungen sind sicherer, weil sie die Werte parametrisieren, sodass Sie weniger Probleme mit der SQL-Injektion und anderen Schwachstellen haben. Sie erhalten auch einige Geschwindigkeitsverbesserungen, da die vorbereiteten Anweisungen nur auf der Vorbereitung und nicht auf der Ausführung analysiert werden müssen. Wenn Sie also die gleichen Parameter verwenden, erhalten Sie zusätzliche Geschwindigkeit!

PDO unterstützt auch vorbereitete Anweisungen, aber es ist etwas komplizierter für Neueinsteiger, da es eine Abstraktionsschicht einführt (im Grunde erstellt man die Abfrage in PHP anstelle von reinen SQL-Anweisungen). Dies war für mich eine Abkehr, als ich anfing, also würde ich versuchen, die MySQLi-Sachen gut zu machen, bevor Sie zu tief in PDO schauen.

+0

Ich habe keine Ahnung was MySQLI ist? –

+0

MySQLi ist in PHP integriert. Es ist eine neuere Möglichkeit, eine Verbindung zur Datenbank herzustellen. Die von Ihnen verwendete Funktion ist veraltet (sie ist veraltet, wird aber in der Codebasis beibehalten, sodass ältere Websites nicht beschädigt werden). Hier finden Sie eine gute Anleitung zu MySQLi, die Sie durch alles führt! http://php.net/manual/en/mysqli.quickstart.php –

1

Es gibt so viele grundlegende Probleme hier, aber es scheint, als ob das Problem mit Ihrer Ausgabe falsch ist, weil Sie die Echokette konzentrieren und falsch machen. Mit PHP können Sie Variablen in doppelte Anführungszeichen setzen und sie wird immer noch richtig parsen. Und wie gesagt, der von Ihnen gepostete Code kann das nicht ausgeben.

Ändern Sie also Ihre erste Echozeile und sehen, was passiert.

echo "<p>Number of movies found: $num_results</p>"; 

ich immer sage, es viel besser ist, sich etwas zu lehren als von einem sogenannten Professor lernen. Er hat dir abgeschriebenen Code gegeben, der jetzt in PHP 7 entfernt wurde. Er hat dir gesagt ich weiß nicht, was mit deinem Code falsch ist und steuerte dich komplett in die falsche Richtung für sichere, moderne Webentwicklung. Dieser Professor hat kein Geschäft, irgendjemandem PHP beizubringen.

+0

Es spuckt immer noch das gleiche komische Stück Code aus. :(Ich möchte nur diese Daten auf meiner Webseite anzeigen. –