将多个表单元素更新到不同列的 PHP 表单


PHP Form that updates multiple form element to different columns

我正在尝试构建一个简单的表单来更新我的mySql数据库。如果我在页面上只有 1 个表单元素(输入),我可以成功,但我无法弄清楚每个 pgae 如何拥有多个表单元素(输入)。

当我添加多个输入时,数据库将不会添加任何内容。

我知道我的代码很接近,但我不知道确切的位置和处理方法。

附言 - 我对此仍然很陌生,正在学习...

这是我所拥有的

<?php
$host = 'hostName';
$user = 'userName';
$password = 'password';
$link = mysql_connect($host, $user, $password);
$selected = mysql_select_db('dbName', $link);
if(!isset($_POST['text-input']))
{

echo '<html>
        <body>
                <form action="post.php" method="post">
                        <input type="text" name="text-input" id="text-input" value="Update MyDataColumn" style="width:300px;" />
                        <input type="submit" value="Submit" />
                </form>
        </body>
</html>'; }

else {
$form_input =  $_POST['text-input'] ;

mysql_query('INSERT INTO `tableName` (columnName) VALUES ("' . $form_input . '");');
echo '
<html>
        <body>
                <script type="text/javascript">
                        alert(''Database now contains: <?php echo $form_input ?>. Redirecting...'');
                        window.location  = ''http://url.com'';
                </script>
        </body>
</html>';
}
?>

我想整理一下如何发布到同一数据库/表中的众多列。

好的,从下面的答案中,我将代码修改为如下所示:

<?php
                $host = 'dbHost';
                $user = 'dbUser';
                $password = 'dbPassword';
                $link = mysql_connect($host, $user, $password);
                $selected = mysql_select_db('dbName', $link);
                if(!isset($_POST['text-input']))
                {

                echo '
                    <form action="index.php" method="post">
                        <input type="text" name="text-input" id="text-input" value="Update itemName" style="width:300px;" />
                        <input type="text" name="text-input2" id="text-input2" value="Update itemDescription" style="width:300px;" />
                        <input type="text" name="text-input3" id="text-input3" value="Update productID" style="width:300px;" /> 
                        <input type="text" name="text-input4" id="text-input4" value="Update itemPrice" style="width:300px;" />    
                        <input type="submit" value="Submit" />
                    </form>'
                    ; }

                else {
                $form_input =  $_POST['text-input'] ;
                $form_input2 =  $_POST['text-input2'] ;
                $form_input3 =  $_POST['text-input3'] ;
                $form_input4 =  $_POST['text-input4'] ;

               mysql_query('INSERT INTO `items` (itemName, itemDescription, productID, itemPrice)
               VALUES ("' . $form_input . '", "' . $form_input2 . '", "' . $form_input3 . '", "' . $form_input4 . '");
                echo '
                <html>
                        <body>
                                <script type="text/javascript">
                                        alert(''Database has been updated. Redirecting to previous url.'');
                                        window.location  = ''http://url.com'';
                                </script>
                        </body>
                </html>';
                }
                ?>

这段代码会发生什么,我得到一个 语法错误,意外的">"

您只需修改查询即可设置多个列。

.HTML:

<form action="post.php" method="post">
    <input type="text" name="text-input" id="text-input" value="Update MyDataColumn" style="width:300px;" />
    <input type="text" name="text-input2" id="text-input2" value="Update MyDataColumn2" style="width:300px;" />
    <input type="text" name="text-input3" id="text-input3" value="Update MyDataColumn3" style="width:300px;" />    
    <input type="submit" value="Submit" />
</form> 

.PHP:

$form_input =  $_POST['text-input'] ;
$form_input2 =  $_POST['text-input2'] ;
$form_input3 =  $_POST['text-input3'] ;

mysql_query('INSERT INTO `tableName` (columnName, columnName2, columnName3) VALUES ("' . $form_input . '","' . $form_input2 . '","' . $form_input3 . '");'); 

在 HTML 输出中,您需要添加另一个类似这样的字段(已经在代码中):

<input type="text" name="text-input" id="text-input"
value="Update MyDataColumn" style="width:300px;" />

但是,它必须有一个不同的"名称"(!

<input type="text" name="text-input2" id="text-input2"
value="Another Input" style="width:300px;" />

现在我们从 $_POST 数组中获取新变量("text-input2"),如下所示:

$form_input =  $_POST['text-input']; // Your code...
$form_input2 = $_POST['text-input2']; // for the new input field

我们需要将 SQL 命令更改为:

mysql_query('INSERT INTO `tableName` (columnName) VALUES ("' . $form_input . '");
mysql_query('INSERT INTO `tableName` (columnName) VALUES ("' . $form_input2 . '");

上面的 SQL 命令会将两个表单输入作为单独的行添加到表中,它们不会相互连接。要将它们放在同一行中,您需要先更改表格并向其添加另一列。为此,SQL 命令是:

ALTER TABLE tableName ADD columnName2 VARCHAR(255);

这会将另一列名为"columName2"添加到表中。我们最终可以将这两个值相加为表的一行:

mysql_query('INSERT INTO `tableName` (columnName, columName2)
VALUES ("' . $form_input . '", "' . $form_input2 . '");

就是这样;-)