第一次问题,长时间读者:)
我正在从MYSQL数据库中的列动态构建表单。这些专栏 在我的应用程序的其他地方创建/删除等。我的表单运行查询 SQL查看并提取列名和列数。简单!建立表格, 使用PHP for循环构建HTML输入,并回显新表单字段的相关HTML。到目前为止一切都很容易。
现在我希望用户更新这些动态添加的字段,并将数据添加到相关列 - 同一个表 作为现有列。因此,由于输入字段的名称与列相同,因此它们将发布到PHP脚本以进行处理。
问题是,虽然我将实际字段名称插入到SQL INSERT查询中,但我无法弄清楚如何提取POST 来自POST的数据动态并将其添加到查询的VALUEs部分。
这是我的尝试.... 查询在没有添加变量的情况下工作。
它的工作原理如下,第一部分是从早期创建的VIEW中检索列名 - 因为它们与表单中的POST名称相同。然后输出到数组和变量以插入到Query。它看起来像implode函数一样,因为相关的列名在语句中是正确的,但我担心我尝试将列名注入POST变量是不行的。
$custq = "SELECT * FROM customProperties";
$result = $database->query($custq);
$num_rows = mysql_numrows($result);
while (list($temp) = mysql_fetch_row($result)) {
$columns[] = $temp;
}
$query = '';
foreach($columns as $key=>$value)
{
if(!empty($columns[$key]))
{
$values .= "'".'$_POST'."['".$value."'], ";
}
}
$q = "INSERT INTO nodes
(deviceName,
deviceInfo,
".implode(", ", $columns).",
nodeDateAdded,
status
)
VALUES
('" . $_POST['deviceName'] . "',
'" . $_POST['deviceInfo'] . "',
".$values."
CURDATE(),
'1'
)";
$result = $database->query($q)
非常感谢任何帮助。我会尽可能多地反馈。请注意,相关性是PHP的新功能,所以如果我在这方面都错了,我会很高兴任何提示/建议
此致
斯蒂芬
答案 0 :(得分:1)
如果您想在不知道输入名称的情况下获取每个 POST输入的值,那么您可以这样做:
//get all form inputs
foreach($_POST as $name => $value)
{
echo $name . " " . $value . "<br>";
}
如果您希望获得某些 POST输入的值,您知道输入字段的名称,那么您可以这样做:
if(isset( $_GET["deviceName"]))
{
$deviceName = $_POST["deviceName"];
}
if(isset( $_GET["deviceInfo"]))
{
$deviceInfo = $_POST["deviceInfo"];
}
要连接数据库并插入信息,您必须执行以下操作:
$host = "localhost";
$dbuser = "username";
$pass = "password";
$datab = "databasename";
//Create DB connection
$con=mysqli_connect($host, $dbuser, $pass,$datab);
if (mysqli_connect_errno($con))
{
echo "ERROR: Failed to connect to the database: " . mysqli_connect_error();
}
else
{
echo "Connected to Database!";
}
//insert into database
mysqli_query($con, "INSERT INTO nodes (deviceName, deviceInfo) VALUES ('$deviceName', '$deviceInfo')");
(不要忘记在工作之后将mysql_real_escape_string添加到$ _POST行。)