从PHP数组创建mysql表

时间:2013-01-15 07:42:07

标签: php mysql arrays

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

我可以正确填充数组,但我的错误消息显示我有语法错误。我确定我做错了什么,但我试图在查询中添加一个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语句。它现在正在运作。

5 个答案:

答案 0 :(得分:2)

首先,这个

'CREATE TABLE $table'

不会填写$ table,但会是LITERALLY

CREATE TABLE $table

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

答案 1 :(得分:0)

1

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

2

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

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

//输出

SELECT * FROM mytable

SELECT * FROM $ tableName

答案 2 :(得分:0)

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

CREATE TABLE $table (
       id INT NOT NULL AUTO_INCREMENT,
       PRIMARY KEY(id),
       col1 INT,
       col2 INT,
--             ^ here
       )

答案 3 :(得分:0)

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

答案 4 :(得分: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 .=',';
    }
}