Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用动态创建的表单创建MySQL表_Php_Mysql - Fatal编程技术网

Php 使用动态创建的表单创建MySQL表

Php 使用动态创建的表单创建MySQL表,php,mysql,Php,Mysql,我一直在尝试创建一个表单,允许用户使用动态生成的表单创建MySQL表。用户首先输入所需的表名,然后输入所需的行数。当他们键入数字时,将创建等量的表格行。创建的每个字段都有一个类似fieldName[]的名称。我希望创建一个数组,然后使用创建的数组完成表创建查询。如果我使用以下东西,我可以让它按照我的意愿工作: $myarray = array("key1"=>array($fieldName[0],$fieldName[1],$fieldName[2]), "key2"=>a

我一直在尝试创建一个表单,允许用户使用动态生成的表单创建MySQL表。用户首先输入所需的表名,然后输入所需的行数。当他们键入数字时,将创建等量的表格行。创建的每个字段都有一个类似fieldName[]的名称。我希望创建一个数组,然后使用创建的数组完成表创建查询。如果我使用以下东西,我可以让它按照我的意愿工作:

$myarray = array("key1"=>array($fieldName[0],$fieldName[1],$fieldName[2]),
    "key2"=>array($fieldType[0],$fieldType[1],$fieldType[2]),
     "key3"=>array($fieldLength[0],$fieldLength[1],$fieldLength[2]));
Javascript动态行创建者:

function numFields(nums) {
var str = "";
for (i = 0; i < nums; i++) {
    str += '<p><label style="padding-left:10px;">Name: <input type="text" value="fred'+(i+1)+'" name="Name[]" id="newtblname'+(i+1)+'" /></label></p>';
}
document.getElementById('Fields').innerHTML = str;
}
而PHP:

if (isset($_GET['tabletest'])) {
$Name=$_POST['Name'];
$x=0;
foreach($Name as $value) {
    $names= $value;
    echo $Name[$x];
    echo "<br>";
    $x++;
}
}
解决方案:以下是我要使用的代码:

$fieldsNum = $_POST['fieldsNum'];
$tblName = $_POST['tblName'];
$nameArray=$_POST['Name'];
$x = 0;

$tables = 'CREATE TABLE '.$tblName.' (';
foreach($nameArray as $value) {
$tables .= $value . " CHAR(200)"; 
$x++;
if($x<$fieldsNum) {
$tables .= ", ";
}

}
$tables .= ');';

echo $tables;
}

您需要在HTML中有一个表单,如:

<form method="post" action="tableCreate.php">
<input type="text" name="fieldName[]"><br>
.
.
.
<button type="submit">Go!</button>
</form>
这将在数组中循环,并将每个表名放入字符串中,以便稍后用于创建表


目前我无法测试,但应该可以。

亲爱的,您描述的事情可以完成。但你必须更新你的问题,展示你的尝试。人们不会在这里为你编码。他们会看到你的代码,如果有什么遗漏,他们会给你建议。谢谢。这在公共互联网上吗?如果是的话,你将如何确保它的安全?我已经更新了我的问题,包括我尝试过的东西。至于它是否在公共互联网上。不。这是给我的同事和我的。这是有效的,只是最后有一个逗号阻止查询工作。我需要找到一种摆脱逗号的方法。用了它一点,我就成功了。我不知道如何/是否可以将代码作为注释发布,所以请参考我更新的问题了解我是如何更改的。谢谢你的帮助@ChrisBuckley抱歉-没有看到您需要帮助的消息。据我所知,你现在没事了?很高兴我能在某些方面帮助您:
$tableArray = $_POST['fieldName'];
$tables = 'CREATE TABLE tblName (';    

foreach($tableArray as $value) {
$tables .= $value . " CHAR(200), ";
}
$tables .= ');';

echo $tables;