2016-08-19 7 views
1

Ich versuche, eine Datei erstellen, die eine Tabelle aus der Abfrage löschen und neu erstellen. Ich bekomme immer einen Syntaxfehler. Es ist eine Weile her, dass ich in Mysql gearbeitet habe und den Fehler nicht sehe. Eine andere Reihe von Augen wäre großartig!Erstellen einer Tabelle aus einer Abfrage mit PHP und Mysql

$dbc = @mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) OR die ('Could not connect to MySQL: ' . mysqli_connect_error()); 

//drop table for updated database 
//Create query 
$q = " 
DROP TABLE IF EXISTS dbName.tbName; 
CREATE TABLE dbName.tbName (ID int) AS 'SELECT 
dbName.tbName.ID 
FROM 
dbName.tbName 
ORDER BY 
dbName.tbName.count DESC 
LIMIT 8'"; 
; 

//run query 
$r = @mysqli_query ($dbc, $q); 


//Displays resutls if query ran correctly 
if ($r) { // If it ran OK, display the records. 

     // Table header. 
     echo '<table align="center" > 
     <tr><td align="left"><b>Number 1</b></td><td align="left"><b>Number 2</b></td><td align="left"><b>Number 3</b></td><td align="left"><b>Number 4</b></td><td align="left"><b>Number 5</b></td><td align="left"><b>Number 6</b></td> 
     <td align="left"><b>Number 7</b></td><td align="left"><b>Number 8</b></td><td align="left"><b>Number 9</b></td><td align="left"><b>Number 10</b></tr>'; 

     // Fetch and print all the records: 
     while ($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) { 
       echo '<tr><td align="left">' . $row['Number_1'] . '</td><td align="left">' . $row['Number_2'] . '</td><td align="left">' . $row['Number_3'] . '</td><td align="left">' . $row['Number_4'] . '</td><td align="left">' . 
       $row['Number_5'] . '</td><td align="left">' . $row['Number_6'] . '</td><td align="left">' . $row['Number_7'] . '</td><td align="left">' . $row['Number_8'] . '</td> 
       <td align="left">' . $row['Number_9'] . '</td><td align="left">' . $row['Number_10'] . '</td></tr>'."\n"; 
     } 

     echo '</table>'; // Close the table. 

     mysqli_free_result ($r); // Free up the resources.  

} else { // If it did not run OK. 

     // Public message: 
     echo '<p class="error">Your numbers could not be retrieved. We apologize for any inconvenience.</p>'; 

     // Debugging message: 
     echo '<p>' . mysqli_error($dbc) . '<br /><br />Query: ' . $q . '</p>'; 

} // End of if ($r) IF. 

mysqli_close($dbc); // Close the database connection. 

Der Fehler, ich bin immer ist:

Ihre Zahlen nicht abgerufen werden können. Wir bitten um Entschuldigung für die Unannehmlichkeiten.

Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax in der Nähe von 'CREATE TABLE entspricht dbName.tbName (ID int) AS' SELECTdbName.tbNam 'Zeile 2

Abfrage: DROP TABLE IF EXISTS dbName.tbName;
CREATE TABLE dbName.tbName (ID int) AS SELECT
dbName.tbName.ID
FROM
dbName.tbName
ORDER BY
dbName.tbName.count DESC
LIMIT 8 '

+0

Die Verwendung des '@' -Operators zur Unterdrückung von Fehlern ist problematisch. – tadman

+1

mein nicht multi_query verwenden – Drew

+0

Dies ist ein neues für mich multi_query? –

Antwort

0

Ich denke, es könnte die einfachen Anführungszeichen um die innere Abfrage beim Erstellen der Tabelle sein.

$q = " 
    DROP TABLE IF EXISTS dbName.tbName; 
    CREATE TABLE dbName.tbName (ID int) AS (SELECT 
    dbName.tbName.ID 
    FROM 
    dbName.tbName 
    ORDER BY 
    dbName.tbName.count DESC 
    LIMIT 8)"; 
+0

Nein, ich bekomme den gleichen Fehler, wenn ich sie in Parens ändere. –

+0

Ich konnte eine Datei mit nur Drop-Tabelle arbeiten und eine Datei mit create-Tabelle funktioniert nur. Es verbindet sie, glaube ich, explodiert. –

0

Ein fehlendes Leerzeichen zwischen "SELECT" und "dbName.tbName.ID"?

+0

Ist das eine ** Frage ** oder ** Antwort **? Erwägen Sie, Kommentare für alles andere als _answers_ –

+0

zu verwenden. Dies ist nicht, wie ich die Datei vervollständigen wollte, aber es funktionierte. Ich habe nur beide Abfragen in die gleiche Datei, führte das Löschen dann das Erstellen. Ich bin interessiert zu sehen, wie die Datei mit der Multi-Abfrage geschrieben worden wäre, obwohl ich verstehe, dass es speicherintensiv sein kann? –

Verwandte Themen