从PHP数组创建mysql表
用户正在创建一个表。用户输入表中的字段数,并根据输入的字段数生成表单。然后输入列的名称和类型。然后,我根据他们输入的内容创建表 我可以让数组正确填充,但我的错误消息说我有语法错误。我肯定我做错了什么,但我尝试在查询中添加一个while循环,因为没有设置要输入的变量数。这就是我所拥有的。如果有更好的办法,我洗耳恭听从PHP数组创建mysql表,php,mysql,arrays,Php,Mysql,Arrays,用户正在创建一个表。用户输入表中的字段数,并根据输入的字段数生成表单。然后输入列的名称和类型。然后,我根据他们输入的内容创建表 我可以让数组正确填充,但我的错误消息说我有语法错误。我肯定我做错了什么,但我尝试在查询中添加一个while循环,因为没有设置要输入的变量数。这就是我所拥有的。如果有更好的办法,我洗耳恭听 $sql = 'CREATE TABLE $table ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), ';
$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());
$sql='CREATE TABLE$TABLE(
id INT非空自动增量,
主键(id),';
而($numDone<$totalFields){
$sql.=$colName[$x].'.$types[$x].',';
$x++;
$numDone++;
}
$sql.=');
$query1=mysql\u query($sql)或die(mysql\u error());
**解决
我将单引号改为双引号,对$table使用点运算符,并为逗号添加了if语句。它现在开始工作了。首先,这个
'CREATE TABLE $table'
不会填写$table,但会按字面意思填写
CREATE TABLE $table
如果您希望显示变量,请使用“
。如果您只是回显$sql
,您会发现这一点。可能会有更多,但可能很容易通过调试发现…1
将查询的单引号(')更改为双引号(“)
2.
或者使用点运算符(.)附加php变量
$tableName = "mytable";
echo $query1 = "SELECT * FROM $tableName";
echo $query2 = 'SELECT * FROM $tableName';
//输出
从mytable中选择*
从$tableName中选择*
CREATE TABLE $table (
id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(id),
col1 INT,
col2 INT,
-- ^ here
)
您可能输入了没有大小的VARCHAR字段,例如
fieldname VARCHAR
将返回错误,而应该是fieldname VARCHAR(100)
?正如Quassnoi所评论的那样,尾随逗号也可能是错误的原因。如果您试图删除尾随斜杠,也可以使用计数器来完成此操作
$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 .=',';
}
}
请发布您的完整错误(显然),以及
$sql
的var_dump
,您是否意识到根据用户请求创建表是一种极不寻常的做法,通常是一个非常糟糕的主意?我理解这一点。我只是准备了一个数据输入程序供一个人使用。稍后我会努力使它更安全。我确实回显了我的$sql,一切都按它应该的方式进行了。无论如何,我会尝试使用双引号。如果您确实回显了$sql
,请将其添加到问题k中,并向我们显示输出。我知道后面的逗号可能会有问题,但我不确定如何消除它。我猜是某种if语句,用来表明这是最后一个…?我不确定如何摆脱它,因为我使用的是循环。@user1978550:look upinfrade