如何使用php和mysql从查询创建表

时间:2016-08-19 15:12:07

标签: php mysql mysql-error-1064

我正在尝试创建一个文件,该文件将从查询中删除并重新创建表。 我一直收到语法错误。自从我在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'选择
  dbName.tbName.ID
  从
  dbName.tbName
  订购单   dbName.tbName.count DESC
  限制8'

2 个答案:

答案 0 :(得分: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 )";

答案 1 :(得分:0)

“SELECT”和“dbName.tbName.ID”之间缺少空格?