0

用户正在创建表。用户输入表格中的字段数,并根据他们输入的数字生成表单。然后他们输入列的名称和类型。然后我根据他们输入的内容创建表格。

我可以让数组正确填充,但我的错误消息说我有语法错误。我确定我做错了什么,但我尝试在查询中添加一个 while 循环,因为没有要输入的变量数量。这就是我所拥有的。如果有更好的方法来做到这一点,我会全力以赴。

    $sql = 'CREATE TABLE $table (
id INT NOT NULL AUTO_INCREMENT,  
PRIMARY KEY(id), ';

        while($numDone < $totalFields){
            $sql .= $colName[$x] . ' ' . $types[$x] . ', ';
            $x++;
            $numDone++;
        }
        $sql .= ')';
    $query1 = mysql_query($sql) or die(mysql_error());

**已解决我将单引号改为双引号,对$table使用点运算符,并为逗号添加了if语句。它现在正在工作。

4

5 回答 5

2

一方面,这

'CREATE TABLE $table'

不会填写 $table,但会是 LITERALLY

CREATE TABLE $table

"如果要显示变量,请使用。如果您只是回显您的$sql. 可能有更多,但可能通过提到的调试很容易发现......

于 2013-01-15T07:45:13.793 回答
0

1

将查询的单引号 (') 更改为双引号 (")。

2

或使用点运算符 (.) 附加 php 变量。

$tableName = "mytable";
echo $query1 = "SELECT * FROM $tableName";
echo $query2 = 'SELECT * FROM $tableName';

// 输出

选择 * 从我的表

选择 * 从 $tableName

于 2013-01-15T07:45:30.313 回答
0

你显然有一个额外的尾随逗号:

CREATE TABLE $table (
       id INT NOT NULL AUTO_INCREMENT,
       PRIMARY KEY(id),
       col1 INT,
       col2 INT,
--             ^ here
       )
于 2013-01-15T07:45:38.833 回答
0

您可能输入了没有大小的 VARCHAR 字段,例如fieldname VARCHAR会返回错误,而不是应该像fieldname VARCHAR(100)?正如 Quassnoi 评论的那样,尾随逗号也可能是错误的原因。

于 2013-01-15T07:47:11.603 回答
0

如果您想摆脱尾部斜杠,您也可以使用计数器来做到这一点。

$fieldsCount = count($listingFields);
foreach($listingFields as $key => $listing)
{ // create the insert statement (do not add comma at the end)
    $query .=" ".$listing[0];
    if ( $key+1 != $fieldsCount )
    {
        $query .=',';
    }
}
于 2015-01-12T21:32:47.850 回答