【问题标题】:Saving to MySQL database via html forms通过 html 表单保存到 MySQL 数据库
【发布时间】:2012-09-26 20:58:36
【问题描述】:

我正在制作一个 php 页面,该页面从数据库表中检索数据并将其放入表中,供用户通过 MySQLi 命令查看。

我想知道我应该如何处理相反的情况。我希望用户能够在文本框中输入信息,然后单击页面底部的“保存”按钮,该按钮会在保存到数据库之前提示用户“您确定”。如果用户单击“是”,则将新条目插入到数据库中。

我有以下代码来创建标签和文本框:

<FORM>
ID: <input type="text" name="id"><br />
NM: <input type="text" name="nm"><br />
Company: <input type="text" name="company"><br />
Address: <input type="text" name="address"><br />
City: <input type="text" name="city"><br />
Zip: <input type="text" name="zip"><br />
State: <input type="text" name="state"><br />
Phone: <input type="text" name="phone"><br />
Website: <input type="text" name="web_site"><br />
</FORM>

但是,当涉及到“保存”按钮时,我可以很好地实现该按钮,但是我将如何保存输入到数据库中的信息呢?

我最初的想法是找到用户输入的值。一般来说,我是 PHP 和 WEB 开发的新手,但我需要知道如何获取文本框中文本的值。我是否必须通过 PHP Post 方法筛选所有值?

一旦我有了用户想要输入的信息,我想也许 MySQLi 有一个插入功能,我在这里找到了,http://php.net/manual/en/mysqli.insert-id.php。然后它只是一个快速插入,在用户在提示符下给出“是”后它就在数据库中。

我的想法是否正确?有没有更有效的方法来做到这一点?

非常感谢任何帮助。我四处寻找与我的场景相关的问题和解决方案,但没有。 =(

谢谢!

编辑:

这是我在 agentprocess.php 上的代码,操作表单将信息发送到:

<?php
$agent_nm = $_POST['nm']; // gather all the variables
$company = $_POST['company'];
$address = $_POST['address'];
$city = $_POST['city'];
$zip = $_POST['zip'];
$state = $_POST['state'];
$phone = $_POST['phone'];
$web_site = $_POST['web_site'];
$batch_id = $_POST['batch_id']; // added batch id
//connect
$conn = new mysqli('local', 'admin', 'pass', 'DB');
    if(mysqli_connect_errno()) {
        exit('Connect failed: '. mysqli_connect_error());
    }
//generate the query (doesn't add id because id is autoincremented)
$query = "INSERT INTO t_agent VALUES (NULL, " . $agent_nm . ", " . $company . ", " . $address . ", " . $city . ", " . $zip . ", " . $state . ", " . $phone . ", " . $web_site . ", " . $batch_id . ")";

//insert and close.
mysqli_query($conn, $query);
mysqli_close($conn);

尽管这里有代码,但我已经查询了表格,但新条目不存在。我在这里遗漏了什么吗?

提前致谢!

【问题讨论】:

  • 您已经四处寻找有关如何在 PHP 中发布数据的解决方案,但没有找到任何东西?我想你看起来并不难。尝试谷歌搜索PHP form post tutorial
  • @MikeBrant 抱歉,我什至不知道“POST”是否适合使用。 :)
  • 问题得到解答后,无需从问题中删除您的代码。 :)(我们可以硬删除包含私人信息的修订,这样我们就不必删除整个问题。)
  • @AnnaLear 啊,这就是它的工作原理。非常感谢! :)

标签: php mysql database forms mysqli


【解决方案1】:

非常简单的示例,将标签标签添加到您的输入标签中并将其放入表单中。

<form method="post" action="process.php" id="myForm" name="myForm" >
<label for="ID">ID</label>:  <input type="text" name="ID" /><br />
<label for="nm">NM:</label> <input type="text" name="nm"><br />
<label for="company">Company:</label> <input type="text" name="company"><br />
<label for="address">Address:</label> <input type="text" name="address"><br />
<label for="city">City</label>: <input type="text" name="city"><br />
<label for="zip">Zip</label>: <input type="text" name="zip"><br />
<label for="state">State</label>: <input type="text" name="state"><br />
<label for="phone">Phone</label>: <input type="text" name="phone"><br />
<label for="web_site">Website</label>: <input type="text" name="web_site"><br />
<input type="submit" name="submit" />// this is your submit button
</form>

在 process.php 页面上

//get your inputs from the form
$ID = $_POST['ID']; 
//do the same for each of the text inputs

然后您可以按照您的描述使用 mysqli 将值插入到数据库中,如果您需要有关问题的 mysqli 部分的任何帮助,请随时发表评论,我没有在此处包含它,因为您已将链接发布在原来的问题。

【讨论】:

  • 感谢您的回答!我会评论我遇到的任何问题或疑问,但这正是我想要的。看起来我毕竟会使用 post 方法。谢谢!
  • @tf.rz 确定没问题,如果您有任何问题,请告诉我们。
  • 什么时间!我已经发布了额外的代码,令人惊讶的是它不起作用。我检查了表格中的新条目,但它不存在。关于它为什么不存在的任何想法?
  • 是的,您没有在指定值之前指定列名,它需要是这样的: $query = "INSERT INTO t_agent (field1, field2, field3) VALUES (value1, value2, value3) ";
【解决方案2】:

您需要使用forms。是的,使用元素中的name 属性,您可以筛选$_POST(例如$_POST['company'])以获取要存储到数据库中的值。这是example。使用 MYSQLi 语句,而不是 mysql,如示例。

【讨论】:

    【解决方案3】:

    对于 Web 开发初学者来说,这是一个简单但又有点复杂的任务。

    所以我将给你一个完整的例子来说明你需要做什么......

    要检查保存按钮,最快的方法是使用 javascript 确认对话框,如果确认也使用 javascript 提交表单。

    Mysql 插入部分很简单,您需要检查是否有通过 $_REQUSET 中的表单提交的数据(这比 $_POST 或 $_GET 更好,因为它可以同时捕获它们。)然后连接到 db 和做一个插入查询...

    这个例子解释了一切:

    http://pastebin.com/thNmsXvn

    但是请使用 Smarty 之类的模板引擎,因为在没有模板的情况下在一个文件中执行 php、javascript 和 html 非常糟糕,长期只会给您带来问题。

    我认为我在使用 pastebin 的示例中非常清楚,但如果您有任何问题,请随时提出......

    补充一下,我已经从 HTML 表单中删除了 ID,因为在 MySQL 中管理 ID 的最佳解决方案是自动增量选项,您可以在创建表并将其设置为特定字段时对其进行配置。通常它是 ID,它必须是一个整数。

    【讨论】:

    • 您警告不要在单个文件中使用 PHP、JavasScript 和 HTML,但您的数据库函数却充满了 SQL 注入漏洞?请修改您的 pastebin 以在每条传入数据周围使用mysqli_real_escape_string
    • 但看在上帝的份上,这只是愚蠢的 5 分钟示例 :) 这个问题不是针对 php 中 mysql 查询的安全性......即使你是对的,而且你是对的,这不是发表评论的地方。
    【解决方案4】:

    你应该为 PHP/MySQL 使用 PDO 函数

    id 字段应该是自增的

    <?php
    $host= "xxx";
    $username="xxx";
    $password="xxx";
    $database="xxx ";
    
    // Gets data from URL parameters
    
    $name = $_POST['nm'];
    //Repeate for all other parameters
    
    // Opens a connection to a MySQL server
    try {
    
    // DBH means "DB Handle"
    
    // MySQL with PDO_MYSQL
     $DBH = new PDO("mysql:host=$host;dbname=$database", $username, $password);
    
    }
    catch(PDOException $e) {
        echo $e->getMessage();
    }
    // STH means "Statement Handle"
    $STH = $DBH->prepare("INSERT INTO mytable ( id,    nm,company,address,city,zip,state,phone,web_site ) values ( NULL,:nm,:company,:address,:city,:zip,:state,:phone,:web_site)");
    $STH->bindParam(':name', $name);
    //Repeate for all other parameters
    $STH->execute();
    
    //# close the connection
    $DBH = null;
    ?>
    

    【讨论】:

      猜你喜欢
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 2014-04-30
      • 2020-08-03
      • 2020-04-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多