PHP获取输入,无线电,选择数据并插入MySQL表

时间:2011-07-30 10:45:27

标签: php mysql

我是php的新手,我一直在寻找有关使用php将表单输入(文本),广播和选择数据插入MySQL数据库表的教程。我发现了一些教程,但大多数都令人困惑。所以我决定问。

好的,这就是我想要做的。我有一个表单有两种类型的输入和选择 1.输入类型文本 2.输入型收音机 3.选择

这是HTML代码:

<form action="" method="post" enctype="multipart/form-data">

  <strong>Your Name: </strong><br>
     <input type="text" name="myname" value="" />
  <br /><br/>    

  <strong>Which class type you want:</strong><br>
    <select name="selection">
      <option value="A">A</option>
      <option value="B">B</option>
      <option value="C">C</option>
    </select>

  <strong>Do you agree?</strong><br>
    <input type="radio" name="agree" value="Yes"> or 
    <input type="radio" name="agree" value="No">


  <input type="submit" name="submit" value="Submit">

</form>  

我已将表单操作设置为空白,因为php代码将与HTML在同一个文件中(它是一个php文件btw)

MySQL表:info 结构体 : 名字 上课 同意

我希望php代码将myname插入 name ,将所选数据选择为 class ,将广播选择的数据插入同意

P / S是的我已经添加了一个连接数据库php脚本,我只想知道如何将表单数据导入mysql。

有人可以写一个PHP代码示例,我该怎么做?

谢谢你,祝你有个愉快的一天。我希望我提供了足够的信息。如果你有帮助,再次感谢。

4 个答案:

答案 0 :(得分:3)

1。您的radio元素存在问题。两个选项的名称应该相同。

应该是这样的:

<input type="radio" name="agree" value="Yes"> or 
<input type="radio" name="agree" value="No">

2。您可以访问$_POST数组中的所有内容,因为您正在使用表单post方法。

$name = $_POST['myname'];
$selection = $_POST['selection'];
$agree = $_POST['agree'];

3。如果您没有将参数化SQL与PDO,MySQLi等库一起使用...... 必须始终转义数据,这些数据将在mysql_real_escape_string()的查询中使用,以便防止SQL注入。

这是一个示例代码,用于执行转义和查询。

// write a function somewhere, to use as a shortcut 
// for escaping data which will be used in a query
function sql_escape($str){
    return "'".mysql_real_escape_string($str)."'";
}

// build the query
$query = sprintf('INSERT INTO table_name(name, class, agree) VALUES(%s, %s, %s)',
                    sql_escape($_POST['myname']),
                    sql_escape($_POST['selection']),
                    sql_escape($_POST['agree']));

// finally run it
$result = mysql_query($query);

答案 1 :(得分:2)

我已经在这里进一步了解了,还有很多可以做的事情和很多方法可以做到,例如你可以扩展$ errors数组以包含字段id然后突出显示HTML表单字段这样用户就可以确切地看到他们出错了。 考虑到您的表单非常简单,您不需要这样。 @ Shef的代码当然可以完成这项工作,但我认为你可能会对更多内容感兴趣。

    <?php
    // check the form has been submitted
    if (isset($_POST['submit'])) {
        // escape the form fields and assign them to variables
        // validate myname to ensure the user entered data
        if (isset($_POST['myname']) && $_POST['myname']!='') {
            $myname = mysql_real_escape_string($_POST['myname']);
        } else {
            // create an error variable array to store errors to display
            $errors[] = 'Please enter your name'; 
        }

        // no need to validate selection here as it alway's has a value
        $classtype = mysql_real_escape_string($_POST['selection']);

        // validate agree unless you want to add 'checked' to one of the values
        if (isset($_POST['agree']) && $_POST['agree']!='') {
            $agree = mysql_real_escape_string($_POST['agree']);
        } else {
            $errors[] = 'Please tell us if you agree?'; 
        }

        //if errors found tell the user else write and execute the query
        if ($errors) {
            $message = '<p class="error">We found a problem:</p><ul>';
            foreach($error as $msg){
                $message .= '<li>'.$msg.'</li>';
            }
            $message .= '</ul><p>Please fix the error/s to continue.</p>';
        } else {
            // write the query
            $query = "INSERT INTO table (myname, classtype, agree) VALUES ";                           
            $query .= "('$myname','$classtype','$agree')"
            // run the query
            mysql_query($query);
            $message = '<p class="sucessful">Thanks '.htmlspecialchars($myname).'. Your selection has been saved.</p>';
        }
    }

    // print the message
    // show the variables in the form field so they don't need re-input
    if ($message!='') { echo $message; }
    ?>
    <form action="" method="post" enctype="multipart/form-data">

      <strong>Your Name: </strong><br>
        <input type="text" name="myname" value="<?php echo htmlspecialchars($myname) ?>" />
      <br /><br/>    

      <strong>Which class type you want:</strong><br>
        <select name="selection">
          <option value="A"<?php if ($classtype=='A') { echo ' selected'; } ?>>A</option>
          <option value="B"<?php if ($classtype=='B') { echo ' selected'; } ?>>B</option>
          <option value="C"<?php if ($classtype=='C') { echo ' selected'; } ?>>C</option>
        </select>

      <strong>Do you agree?</strong><br>
        <input type="radio" name="agree" value="Yes"<?php if ($agree=='Yes') { echo ' checked'; } ?>> or 
        <input type="radio" name="agree" value="No"<?php if ($agree=='No') { echo ' checked'; } ?>>

      <input type="submit" name="submit" value="Submit">

    </form> 

另外:@sqwk,不要将人们指向w3schools,请看:http://w3fools.com/

答案 2 :(得分:1)

检查$ _POST数组中是否有数据并从中获取值。

看看这里 - 第二个例子是你需要的:http://www.w3schools.com/php/php_mysql_insert.asp

(你必须做出Shef建议的修改。)

另外请记住检查数据完整性,否则人们可能会使用您的插件来运行恶意代码。

答案 3 :(得分:1)

检查这个简单的例子:

<form action="welcome.php" method="post">
Name: <input type="text" name="name" />
Sname: <input type="text" name="sname" />
<input type="submit" />
</form>

提交表单后,您可以使用姓名和sname。

的welcome.php ::

    <?php 
$name= $_POST["name"]; 
$sname= $_POST["sname"]; ?>

现在您可以像使用一样使用此变量。