2017-08-20 7 views
0

Ich versuche, PHP von W3schools zu lernen, die eine mysql-Abschnitt enthält. Bis jetzt habe ich jeden anderen Teil des Tutorials auf w3school mit Ausnahme der Teil, der Inhalt von a Datenbanktabelle. Aus irgendeinem seltsamen Grund wird nichts angezeigt, wenn ich meinen Code ausführe. Bitte, wie kann ich das funktionieren und könnte mein Problem von der Tatsache kommen, dass ich MariaDB mit Xampp anstelle von Mysql benutze, obwohl sie sagten, dass es praktisch die gleiche Syntax war. Hier ist der CodeWie bekomme ich mysql Zeilen aus einer Datenbanktabelle zu drucken

<?php 
$servername = "localhost"; 
$username = "uhexos"; 
$password = "strongpassword"; 
$database = "fruitdb"; 

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

// Create database 
$sql = "CREATE DATABASE fruitDB"; 
if ($conn->query($sql) === TRUE) { 
    echo "Database created successfully"; 
} else { 
    echo "Error creating database: " . $conn->error; 
} 

$conn->close(); 
// Create connection 
$conn = mysqli_connect($servername, $username, $password,$database); 

// sql to create table 
$complexquery = "CREATE TABLE MyFruits (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
FruitType VARCHAR(30) NOT NULL, 
FruitTaste VARCHAR(30) NOT NULL, 
FruitQuantity INT NOT NULL, 
DatePurchased TIMESTAMP 
)"; 

if ($conn->query($complexquery) === TRUE) { 
    echo "Table Fruits created successfully<br> "; 
} else { 
    echo "Error creating table: " . $conn->error; 
} 
$entry = "INSERT INTO myfruits (fruittype,fruittaste,fruitquantity) VALUES ('orange','sweet','50'),('lemon','sour','10'),('banana','sweet','15')"; 

if ($conn->query($entry) === TRUE) { 
    echo "New records created successfully"; 
} else { 
    echo "Error: " . $conn->error; 
} 

    $sql = 'SELECT id, fruitname, fruittaste FROM myfruits'; 

    $retval = mysql_query($sql, $conn); 

    if(! $retval) { 
     die('Could not get data: ' . mysql_error()); 
    } 

    while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { 
     echo "EMP ID :{$row['id']} <br> ". 
     "EMP NAME : {$row['fruitname']} <br> ". 
     "EMP SALARY : {$row['fruittaste']} <br> ". 
     "--------------------------------<br>"; 
    } 

    echo "Fetched data successfully\n"; 

    mysql_close($conn); 
?> 

dies die Ausgabe ich von allen meinen echos bekommen.

Error creating database: Can't create database 'fruitdb'; database existsError creating table: Table 'myfruits' already existsNew records created successfully 

oder

Database created successfullyTable Fruits created successfully 
New records created successfully 

Antwort

1

Auf der Grundlage der Fehlermeldung, verwaltet die Datenbank und Tabellen einmal erstellen und jetzt jedes Mal, wenn Sie den Code ausführen es fehlschlägt, weil Sie nicht die Namen wiederverwenden können.

Sie wollen definitiv keinen Code haben, der versucht, & zu löschen, fangen Sie jedes Mal neu in Ihrer Datenbank an. Tatsächlich stelle ich meistens fest, dass Sie nicht einmal die Datenbank in Ihrem normalen Code erstellen, sondern dafür phpMyAdmin oder eine andere Admin-Seite verwenden. Aber das Erstellen von Tabellen in Code ist normal genug. Zwei Optionen:

1 - Erstellen Sie die Tabelle nur, wenn sie noch nicht existiert. Das ist extrem sicher. Wenn Sie jedoch eine Tabelle mit einer neuen Struktur neu starten oder mit ihr immer leer beginnen wollen, funktioniert das nicht. Um dies zu tun, ändern Sie einfach CREATE TABLE zu CREATE TABLE IF NOT EXISTS

2 - Löschen Sie die Tabelle vor der Erstellung. Vor jedem CREATE TABLE Befehl, fügen Sie einen Befehl wie DELETE TABLE IF EXISTS MyFruits

+1

Verdammt, schlag mich dazu, ich war gerade dabei, die gleiche Antwort –

+0

zu posten, die mir nicht half, die in der Tabelle gespeicherten Artikel zu bekommen. Die Datensätze werden tatsächlich trotz dieser hässlichen Fehler hinzugefügt @manassehkatz – uhexos

+0

@Uhexos - Korrigieren Sie, dass die Datensätze trotzdem gespeichert werden - das ist wie erwartet. Willst du damit sagen, dass am Ende des Laufs keine 'Daten erhalten:' oder 'Daten erfolgreich abgeholt? – manassehkatz

0

Denken Sie daran, Datenbankname ist Groß- und Kleinschreibung, so spielt es keine Rolle, ob Sie einen DB-Name „fruitdb“ oder „fruitDb“ schaffen beide sind same.That der Grund ist, dass Sie bekommen Fehler. Außerdem müssen Sie beim Ausführen einer Datei keine neue Datenbank erstellen. Wenn Sie die Datenbank bereits erstellt haben, müssen Sie lediglich die Verbindung mit ihr herstellen. Lassen Sie uns Ihren Code Zeile für Zeile debuggen.

Linie 8 -

// Create connection 
$conn = new mysqli($servername, $username, $password); 

Hier können Sie die Verbindung mit Ihrer Datenbank erstellen, weil Sie bereits die Datenbank erstellt. Wenn Sie Ihren phpmyadmin überprüfen, finden Sie eine Datenbank finden namens „fruitdb“

Linie 10 -

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

Hier Ihre Überprüfung, ob die Sie in der Lage sind, mit der Datenbank zu verbinden. Wenn nicht, wird der Fehler ausgelöst und Ihr Skript wird beendet. Im Moment läuft Ihr Code erfolgreich bis zu diesem Punkt.

Linie 15 -

// Create database 
$sql = "CREATE DATABASE fruitDB"; 

Hier können Sie noch einmal schaffen eine Datenbank mit dem gleichen Namen und den Code nicht mehr funktioniert, wie Sie bereits haben.

0

Der Fehler war von dieser Zeile $ sql = 'SELECT ID, Obstname, Fruchtgeschmack von Myfruits';

Ich habe versehentlich fruitname anstelle von fruittype und das ist, was es fehlgeschlagen verursacht. Also für jeden anderen mit diesem Problem ist mein Rat, Ihre Variablennamen zu überprüfen, wenn Sie sich Ihrer Syntax hundertprozentig sicher sind. Danke für die Hilfe.

Verwandte Themen