创建数据库表不起作用。 Microsoft Access

时间:2015-06-21 22:09:14

标签: php database ms-access

目前我正在建立一个类似论坛的网站。 每次用户创建一个新的论坛帖子时,我都希望它在我的数据库中创建一个新表,我似乎无法实现。 我尝试了几种不同的方法,但似乎无法让它发挥作用。 在发布我的任何代码之前,如果需要更多代码,请告诉我们,以便您了解我的问题。

运行该功能时出现此错误:

Caught exception: Source: Microsoft JET Database Engine
Description: Syntax error in field definition. CREATE TABLE MovingThreadTable1 (text text);
Warning: Cannot modify header information - headers already sent by (output started at D:\wwwWEB\www\2014-2015\WEB14_13\dbtools.php:39) in D:\wwwWEB\www\2014-2015\WEB14_13\createMovingThread.php on line 18

创建表格的函数:

function createForumMovingThreadsTable($movingThreadTableName){
    $sql = "CREATE TABLE MovingThreadTable1 (text text);";
    sql($sql);
}

sql函数:

function sql($query){
    $conn = new COM ("ADODB.Connection") or die("Cannot start ADO");
    //$connStr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\wwwWEB\\www\\2014-2015\\WEB14_49\\test\\userdb.mdb";
    $root = $_SERVER["DOCUMENT_ROOT"];
    $connStr = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=$root\\2014-2015\\WEB14_13\\db\\userdb.mdb";

    $conn->open($connStr);
    try
    {
        $rs = $conn->execute($query);

        # Assosiative array
        $assoc_array = array();

        # Number
        $index = 0;

        # The below code will create an array (depending on the fields of the database table of course):
        # Click to see the array created by the code below
        if ($rs->State) {
            # Iterate through our result
            while (!$rs->EOF) {

                for ($x = 0; $x < $rs->Fields->Count; $x++) {
                    $assoc_array[$index][$rs->Fields[$x]->Name] = $rs->Fields[$x]->Value;
                }
                # Move cursor to next row in recordset
                $rs->MoveNext();
                $index++;
            }
        }

        $conn->Close();
        return $assoc_array;
    } catch (Exception $e) {
        $conn->Close();
        echo 'Caught exception: ',  $e->getMessage(), "\n";
        echo $query;
    }
    return false;
}

告诉我是否需要更多信息。

1 个答案:

答案 0 :(得分:0)

文本是MS Access Jet / ACE Engine中的保留字。请考虑包围字段名称或完全更改字段名称。

CREATE TABLE MovingThreadTable1 ([text] text);