2017-09-21 3 views
-1

Kämpfen jetzt für einen Tag. Müssen Sie eine Datenbank in PHP erstellen (wenn nicht vorhanden) und danach sicherstellen, dass sie leer ist (falls bereits vorhanden). Aber irgendwie vermisse ich etwas Wesentliches und nichts passiert. Es sieht so aus, als überspringe es einfach die Erstellung und den Lösch-Teil. wenn nicht vorhandene Sicherzustellen Tabelle leerPHP erstellt keine Datenbank

TESTDB

Erstellen Tabelle :

<?php 
error_reporting(E_ALL); ini_set('display_errors', 1); 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 

//Database variables 
$servername = "localhost"; 
$username = "Somename"; 
$password = "Verysecret"; 
$dbname = "TESTDB"; 
$temptable = "tablename"; 

//Open database 
$conn = new mysqli($servername, $username, $password,$dbname); 

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "Connected successfully to database: ",$dbname,"<br>" ; 
?><br><?php 

//Create table if not existing yet (syntax error here?) 
echo "Creating table if non existing","<br>"; 
$conn->select_db('$dbname'); 
$sql = "CREATE TABLE IF NON EXIST `{$temptable}` (
`xml_date` datetime, 
`xml_duration` int(2), 
`xml_boat` VARCHAR(30), 
`xml_itinerary` VARCHAR(30), 
`xml_dep_arr` VARCHAR(30), 
`xml_spaces` INT(2), 
`xml_rate_eur` decimal(4,2), 
`xml_rate_gbp` decimal(4,2), 
`xml_rate_usd` decimal(4,2))"; 

//This part not showing up in output at all! 
if(mysqli_query($conn, $sql)){ 
    echo "Table created successfully"; 
    } else { 
     echo "Table is not created successfully "; 
    } 

//Deleting rows if table existed already (same syntax error here?) 
echo "Making sure table is empty","<br>"; 
$sql = "DELETE * FROM `{$temptable}`"; 

mysqli_close($conn); 

?> 

Alles, was ich sehe, wenn ich (localY mit Mamp) laufen soll:

erfolgreich Verbunden mit Datenbank

Die Datenbank wird nicht erstellt, wenn ich sie selbst vorher in SequelPro erstelle und einige Zeilen hinzufüge.

Hilfe, suche jetzt einen Tag! Was mache ich falsch? In Anführungszeichen, Anführungszeichen, Anführungszeichen? Das Offensichtliche überwachen?

+0

DELETE * 't Hut ist ungültig und du hast es noch nicht ausgeführt. –

+0

echo $ sql und führen Sie es gegen in db, können Sie detaillierte Fehler erhalten – user1844933

+0

'CREATE TABLE WENN NICHT EXIST 'ist nicht die richtige Syntax. Konsultieren Sie https://dev.mysql.com/doc/refman/5.7/en/create-table.html –

Antwort

2

Lassen Sie uns über das, was Sie hier verwendet haben, iterieren.

DELETE *, ist ungültig, da der Stern für SELECT und nicht DELETE verwendet wird.

Die grundlegende Syntax ist DELETE FROM TABLE WHERE col_x = ? (mit optional WHERE Klausel).

Beispiel:

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name 
    [PARTITION (partition_name [, partition_name] ...)] 
    [WHERE where_condition] 
    [ORDER BY ...] 
    [LIMIT row_count] 

Ihre Tabellenerstellung Syntax ist falsch, die grundlegende Syntax ist:

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name 
    (create_definition,...) 
    [table_options] 
    [partition_options] 

gemäß der Dokumentation.

, die die Schlüsselwörter IF NOT EXISTS und nicht Ihre IF NON EXIST verwendet.

Die Abfrage DELETE wurde ebenfalls nicht ausgeführt.

und auf Fehler prüfen auf es auch:

Plus, as Chris war so schön in den Kommentaren darauf hin; Variablen werden nicht in einfachen Anführungszeichen analysiert.

Entweder entfernen Sie sie aus $conn->select_db('$dbname'); nach einem

  • $conn->select_db($dbname);

oder in doppelte Anführungszeichen gesetzt:

  • $conn->select_db("$dbname");

Edit:

Wenn das Ziel ist es, ganz aus der Tabelle loszuwerden (nach und Ihre DELETE Abfrage zu sehen), dann beide DELETE und TRUNCATE sind nicht das, was Sie hier, aber DROP TABLE verwenden möchten.

In der Dokumentation:

Grund Beispiel:

DROP [TEMPORARY] TABLE [IF EXISTS] 
    tbl_name [, tbl_name] ... 
    [RESTRICT | CASCADE] 
+0

@ chris85 Ohhhhhh ja, guter Fang Chris danke; Ich werde bearbeiten. –

+0

@ chris85 Danke Chris, bitte halte deinen Kommentar intakt hier, ich habe eine Bearbeitung der Antwort vorgenommen und zitiert, was du gesagt hast; das entging mir aus irgendeinem Grund. Edit: Oh, du hast deinen Kommentar gelöscht, auf den ich geantwortet habe. Ich werde nur diese "für die Aufzeichnung" behalten ;-) –

+0

Dank Fred, meine Entschuldigung für die Fehler ist die kurze Zeit (zwei Wochen) Ich versuche, meinen Kopf um PHP zu wickeln. Ich habe gehofft, dass ich auf dieser Seite Antworten finden kann, aber mir ist jetzt bewusst, dass einige Kopierpasten nur Probleme verursachen. Ich brauche dringend eine gute Dokumentation des aktuellen Codes NUR, damit sich die Wolke in meinem Kopf zu Wissen materialisiert. – John

-1

die Sie interessieren, ich erhielt die Tabelle erstellt

<?php 
error_reporting(E_ALL); ini_set('display_errors', 1); 
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 

//Database variables 
$servername = "localhost"; 
$username = "detecttn_user"; 
$password = "Azer12345"; 
$dbname = "detecttn_teststack"; 
$temptable = "test "; 

//Open database 
$conn = new mysqli($servername, $username, $password,$dbname); 

if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "Connected successfully to database: $dbname <br>" ; 
?><br><?php 

//Create table if not existing yet (syntax error here?) 
echo "Creating table if non existing","<br>"; 

    $sql ="SHOW TABLES LIKE '$temptable'"; 
if(mysqli_query($conn, $sql)){ 
    echo "Table exist"; 
    } else { 
     echo "Table does not exist"; 
     // if table not exist create it 
     $sql = "CREATE TABLE IF NOT EXISTS $temptable (
`xml_date` datetime, 
`xml_duration` int(2), 
`xml_boat` VARCHAR(30), 
`xml_itinerary` VARCHAR(30), 
`xml_dep_arr` VARCHAR(30), 
`xml_spaces` INT(2), 
`xml_rate_eur` decimal(4,2), 
`xml_rate_gbp` decimal(4,2), 
`xml_rate_usd` decimal(4,2))"; 
mysqli_query($conn, $sql); 

$sql ="SHOW TABLES LIKE '$temptable'"; 
if(mysqli_query($conn, $sql)){ 
    echo "Table created"; 
    } else { 
     echo "Table creation failed"; 
    } 
    } 

//Deleting rows if table existed already (same syntax error here?) 
echo "Making sure table is empty","<br>"; 
$sql2 = "TRUNCATE TABLE $temptable"; 
if(mysqli_query($conn, $sql2)){ 
    echo "Table is empty"; 
    } else { 
     echo "Error"; 
    } 
mysqli_close($conn); 

?> 
+1

Löschen * ist falsche Syntax – Akintunde007

+0

ja, aber es ist eine nutzlose Zeile (nicht ausgeführt) –

+0

Ja die SQL-Variable wird nicht ausgeführt. Bitte benachrichtigen Sie das OP. – Akintunde007

Verwandte Themen