2016-08-19 79 views
1

我想創建一個文件,該文件將從查詢中刪除並重新創建一個表格。 我不斷收到語法錯誤。自從我在mysql工作了一段時間後,我沒有看到錯誤。另一組眼睛會很棒!如何使用php和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. 

,我得到的錯誤是:

你的號碼無法檢索。很抱歉給您帶來不便。

您的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第2行使用'CREATE TABLE dbName.tbName(ID int)AS'SELECTdbName.tbNam'附近的正確語法。

查詢: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

使用'@'操作符來抑制錯誤是有問題的。 – tadman

+1

我不使用multi_query – Drew

+0

對我來說這是一個新的multi_query? –

回答

0

我認爲這可能是構建表時內部查詢周圍的單引號。

$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

不,我得到同樣的錯誤,如果我將它們更改爲parens。 –

+0

我已經能夠得到一個只有drop table工作的文件和一個只有create table才能工作的文件。它正在結合他們,我相信這是炸燬。 –

0

「SELECT」和「dbName.tbName.ID」之間缺少空格嗎?

+0

這是一個**問題**或**答案**?考慮使用其他評論而不是_answers_ –

+0

這不是我想要完成的文件,但它的工作原理。我只是把兩個查詢放在同一個文件中,運行delete然後創建。我有興趣瞭解如何使用多查詢來編寫文件,儘管我知道這可能是內存密集型的? –