【问题标题】:Why isn't my form submitting data into my database?为什么我的表单没有将数据提交到我的数据库中?
【发布时间】:2015-02-05 16:20:38
【问题描述】:

好的,所以我有一个表单,我正在尝试让它将数据提交到我的数据库中,但它无法正常工作...我不确定是我的表单导致问题还是它的问题连接数据库?

我的表名是正确的,值字段,登录信息...但是每当我点击提交时,它并没有插入任何数据。

可能是我的表单有问题吗?你们介意看看吗?

<form action="form.php" method="POST"> 

<div class="row"> 
<div class="large-4 columns"> 


<span id="spryfirstname">
<input name="firstname" type="text" class="text" placeholder="First Name"/>
<span class="textfieldRequiredMsg">A value is required.</span></span></div> 

<div class="large-4 columns"> 

<span id="sprylastname">
<input name="lastname" type="text" class="text" placeholder="Last Name"/>
<span class="textfieldRequiredMsg">A value is required.</span></span></div>

 <div class="large-4 columns">
  <div class="row collapse"> 

   <div class="small-9 columns"><span id="spryemail">
     <input name="email" type="text" placeholder="email@example.com"/>
    <span class="textfieldRequiredMsg">A value is required.</span></span></div>
  </div> 
  </div> 
   </div>

<div class="row">
             <div class="large-12 columns">
             <label>Check all Products that you're interested in</label>
              <div>
              <input name="products[]" type="checkbox" value="all">
               ALL PRODUCTS/SERVICES

              <input name="products[]" type="checkbox" vallue="trade">Trade-in
              <input name="products[]" type="checkbox" value="layaway">Layaway products
              <input name="products[]" type="checkbox" value="theatre">Home Theatre Systems
              <input name="products[]" type="checkbox" value="TV">HD TVs
               <input name="products[]" type="checkbox" value="Games">Video Game Consoles</label> <br>
               <input name="products[]" type="checkbox" value="laptops"> Laptops</label>
               <input name="products[]" type="checkbox" value="monitors"> Monitors</label>
               <input name="products[]" type="checkbox" value="phones"> Phones</label>
               <input name="products[]" type="checkbox" value="cameras"> Cameras</label>
               <input name="products[]" type="checkbox" value="acoustic"> Acoustic Guitars</label>
               <input name="products[]" type="checkbox" value="electric"> Electric Guitars</label>
               <input name="products[]" type="checkbox" value="drums"> Drums</label>
               <input name="products[]" type="checkbox" value="wind"> Wind Instruments</label> <br>
             <input name="products[]" type="checkbox" value="pianos"> Pianos</label>
             <input name="products[]" type="checkbox" value="violins"> Violins</label>
             <input name="products[]" type="checkbox" value="diamonds"> Diamonds 
             <input name="products[]" type="checkbox" value="neck"> Necklaces
             <input name="products[]" type="checkbox" value="rings"> Rings
             <input name="products[]" type="checkbox" value="ear"> Ear Rings</label>
             <input name="products[]" type="checkbox" value="gold"> Gold Jewelry
             <input name="products[]" type="checkbox" value="silver"> Silver Jewelry
             <hr>

                </div>
                 </div>
        <div class="row">
        <div class="large-12 columns">
         <label>How often would you like to have product updates? <select>
          <option value="daily" name"Updates">Daily</option>
          <option value="weekly" name"Updates">Weekly</option>
           <option value="monthly" name"Updates">Monthly</option>
             </select> 
             </label>
              </div> 
              </div>
                   <div class="row">
                    <div class="large-12 columns">
                    <label>Tell us a little about yourself <textarea placeholder="Type here">
                     </textarea> 
                      </label>
                     </div> 
                     </div> 
             <div class="row">

             <input class="button small large-3" type="submit" name"submit" />
                             </div>
                             </form>

这是我连接到数据库的部分:

     <?php
    if (isset($_POST['submit'])){ 

 $con = mysql_connect("localhost","dxh6110","******");
 if(!$con){
 die("Can not connect: " . mysql_error());
}

mysql_select_db("dxh6110",$con);

$sql = "INSERT INTO Signup (Firstname,Lastname,Email) VALUES('$_POST[firstname]','$_POST[lastname]','$_POST[email]')";

mysql_query($sql,$con);
mysql_close($con);

}
?>

另外,如果我想从复选框中输入数据并下拉,我该怎么做呢?会和textfields一样吗?

【问题讨论】:

标签: php mysql database forms


【解决方案1】:

在您编辑之前为您的originally posted code 提供此答案,并且不将其标记为编辑。

这就是原因:

您的提交按钮在name"submit" 中没有等号。

将其更改为name="submit",您的代码执行基于您的条件语句:

if (isset($_POST['submit']))

看了你的代码后,我花了一段时间才发现那个,想知道“为什么”它不起作用。

您的其余代码确实已检出,但我还必须声明您当前的代码对SQL injection 开放。使用prepared statementsPDO with prepared statements它们更安全


至于您的复选框,您可以基于以下几点:

$checkbox = $_POST['products'];

  for($i=0;$i <sizeof($checkbox);$i++) {
  $query="INSERT INTO your_table (col) VALUES('".$checkbox[$i]."')";
    mysql_query($query,$con) or die(mysql_error());
}

对于一些额外的保护:

$firstname= stripslashes($_POST['firstname']);
$lastname= stripslashes($_POST['lastname']);
$email = stripslashes($_POST['email']);

$firstname= mysql_real_escape_string($_POST['firstname']);
$lastname= mysql_real_escape_string($_POST['lastname']);
$email = mysql_real_escape_string($_POST['email']);

$sql = "INSERT INTO Signup (Firstname,Lastname,Email)  
        VALUES('".$firstname."','".$lastname."','".$email."')";

mysqli_方法:

<?php
$con = mysqli_connect("myhost","myuser","mypassw","mybd") 
       or die("Error " . mysqli_error($con)); 

$firstname = stripslashes($_POST['firstname']);
$lastname = stripslashes($_POST['lastname']);
$email = stripslashes($_POST['email']);

$firstname = mysqli_real_escape_string($con,$_POST['firstname']);
$lastname = mysqli_real_escape_string($con,$_POST['lastname']);
$email = mysqli_real_escape_string($con,$_POST['email']);

$sql = "INSERT INTO Signup (Firstname,Lastname,Email)  
        VALUES('".$firstname."','".$lastname."','".$email."')";

mysqli_query($con,$sql);
mysqli_close($con);

【讨论】:

  • 哇哦,我现在明白了。我也错过了其他一些东西上的 = 符号。谢谢你。那么,它正在提交表单但仍未将所选数据添加到数据库中?会不会是楼上那些人说的?旧的 sql 语句?
  • @DLH 不客气。如果mysql_ 不起作用,请使用mysqli_,最好使用准备好的语句。
  • @DLH 重新加载我的答案,我添加了一个mysqli_ 方法供您使用(见底部附近)。这是一个基本的方法。不过,请阅读准备好的陈述。我得跑了。让我知道,我明天会回来,干杯
  • 哇,谢谢。这实际上将信息输入到我的数据库中,非常感谢。它输入了电子邮件的数据,但名字和姓氏是空白的。会继续找!再次感谢你!!!
  • 嗯...我不知道为什么,但我现在遇到的问题是它会在我的表中输入 2 个条目。一项所有字段均为空白,第二项 3 个字段中的 1 项为空白。正确提交电子邮件时,名字和姓氏为空白。我没有看到拼写错误,一切看起来都是正确的。有什么想法吗??
猜你喜欢
  • 1970-01-01
  • 2010-10-17
  • 2016-05-23
  • 2013-06-22
  • 2021-05-24
  • 2021-02-09
  • 1970-01-01
  • 2019-05-03
  • 2023-03-26
相关资源
最近更新 更多