如何在php中通过表单post发送变量值?

如何在php中通过表单post发送变量值?,php,html,Php,Html,我必须通过“form post”发布一个值并将其插入表中,以下是我在两个文件中的代码: <html> <body> <table> <form enctype="multipart/form-data" action="<?php $_SERVER["DOCUMENT_ROOT"] ?> /contents/ad_posting_process_4.php" method="post"> <?php $cat_no = "10

我必须通过“form post”发布一个值并将其插入表中,以下是我在两个文件中的代码:

<html>
<body>
<table>
<form  enctype="multipart/form-data" action="<?php $_SERVER["DOCUMENT_ROOT"] ?>  /contents/ad_posting_process_4.php" method="post">
<?php $cat_no = "101010"; ?>
<input type=hidden id="category" value=" <?php echo $cat_no; ?> ">  
<tr> <td>Sub Category: </td><td>    <input type=text id="sub_category" > </td>
<tr><td></td> <td><input type="submit" name="action" value="Post"></td></tr></tr>
</form>
</body></html>


输入的
类型
需要用引号括起来
,并且有
名称
属性,而不是
id

<input type='hidden' name="category" value=" <?php echo $cat_no; ?> " />  
<tr> <td>Sub Category: </td>
<td><input type='text' name="sub_category" > </td>

您需要使用
名称
属性:

<input type="text" name="category" />
<input type="text" name="sub_category" />

我最近在自己的网站上做了一些非常类似的事情,并得到了这个社区的帮助。在HTML方面,我创建了一个标准表单,并给每个输入一个“名称”。例如,假设您正在尝试捕获城市和州:

<html>
<body>
<form>
<tr>
<td>State: </td><td> <input type="text" style="border:1px solid #000000" name="state" /></td>
<td>City</td><td><input type="text" style="border:1px solid #000000" name="city" /></td>
</tr>
</form>
</body>
</html>

这对我来说很好。请注意,它只能将HTML表单输入与名称完全相同的列进行匹配。在我的例子中,我想创建100多个输入,这样就更容易了。如果您处理的是5-10,只需手动插入特定变量可能会更容易。

在ad_posting_4.php中,在会话_start()之后添加一行“print_r($_POST);”;上载文件时通常会使用
enctype=“multipart/form data”
。从您的输入字段中可以看出您正在传递字符串。这可能会导致问题。
类别
输入是
隐藏的
,而不是
文本
<html>
<body>
<form>
<tr>
<td>State: </td><td> <input type="text" style="border:1px solid #000000" name="state" /></td>
<td>City</td><td><input type="text" style="border:1px solid #000000" name="city" /></td>
</tr>
</form>
</body>
</html>
$dbtype     = "mysql";
$dbhost         = "localhost";
$dbname     = "name";
$dbuser     = "user";
$dbpass     = "pass";

$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);
$sql = "SELECT column_name FROM information_schema.columns WHERE table_name = '[Insert Name of your table here]'";
$q = $conn->prepare($sql);
$q->execute();
$columns = $q->fetchAll(PDO::FETCH_COLUMN, 0);

$cols = array();
foreach ($_POST as $key=>$value)
{
    // if a field is passed in that doesn't exist in the table, remove it.  The name of the input that is removed will be echoed so you can debug.  Remove echo if you go to production.
    if (!in_array($key, $columns)) {
        unset($_POST[$key]);
echo $key;
    }
}
$cols = array_keys($_POST);
$sql = "INSERT INTO Facilities(". implode(", ", $cols) .") VALUES (:". implode(", :", $cols) .")";
$q = $conn->prepare($sql);
array_walk($_POST, "addColons");
$q->execute($_POST);

function addColons($value, &$key)
{
    $key = ":{$key}";
}