【问题标题】:Form submit is not entering data into database表单提交未将数据输入数据库
【发布时间】:2016-07-23 13:54:30
【问题描述】:
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
    <input type="text" name="duration" placeholder="Enter duration">
    <input type="text" name="budget" placeholder="Enter Budget">
    <input type="text" name="keyskills" placeholder="Enter Skills">
    <input type="text" name="jobdescription" placeholder="Enter Job Description">
    <input type="text" name="edate" placeholder="Click to enter expiry date">
    <input type="text" name="cdexmin" placeholder="Enter Minimum Experience">
    <input type="text" name="cdexmax" placeholder="Enter Maximum Experience">
    <input type="submit"> 
</form>

<?php
if(isset($_POST['submit'])) {
    try {
        // Establish server connection and select database
        $username = $_SESSION['username'];
        $stmt = $db->prepare("SELECT * FROM employer INNER JOIN company ON employer.cid = company.cid WHERE employer.username='$username' ");
        $stmt->execute();
        $row = $stmt->fetch(PDO::FETCH_ASSOC);
$cid=$row['cid'];
        $eid = $row['eid'];
        $duration = $_POST['duration'];
        $budget = $_POST['budget'];
        $keyskills = $_POST['keyskills'];
        $jobdescription = $_POST['jobdescription'];
        $edate = $_POST['edate'];
        $cdexmin = $_POST['cdexmin'];
        $cdexmax = $_POST['cdexmax'];
        $stmt = $db->prepare("INSERT INTO job(cid,eid,duration,budget,keyskills,jdesc,edate,cdexmin,cdexmax) values('$cid','$eid','$duration','$budget','$keyskills','$jobdescription','$edate','$cdexmin','$cdexmax') ");
        $stmt->execute();
        echo "JOB POSTED SUCCESSFULLY";
    } catch(PDOException $e) {
        echo "Error occurs:". $e->getMessage();
    }   
}
?>

这是我刚刚为试图将值插入数据库的示例表单创建的代码。我的问题是这些值没有进入数据库。

为什么它不起作用?是否有我找不到的语法错误?

页面解析很容易完成,它没有显示任何错误但值没有进入数据库。

【问题讨论】:

  • 为您的提交按钮添加一个name 标签。 &lt;input type="submit" name="submit"&gt;
  • 您应该验证所有用户提交的数据,并且您很容易受到 SQL 注入攻击,因为您没有正确使用准备好的语句
  • 请注意,form 的action 属性中的代码&lt;?php $_SERVER['PHP_SELF'] ?&gt; 实际上并没有回显任何内容,从而导致action=""。这是有效的,因为空字符串表示当前页面,但您可能应该将其更改为 &lt;?=$_SERVER['PHP_SELF'];?&gt;。
  • AFAIK PHP_SELF 容易出现 XSS。如果您想提交到同一页面,请省略action!

标签: php mysql forms pdo


【解决方案1】:

您正在使用$_POST['submit'],但没有任何输入该名称。

将名称添加到您的输入类型提交如下

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

【讨论】:

    【解决方案2】:

    改变

    <input type="submit"> 
    

    到

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

    【讨论】:

    • 你忘记了name 标签:name="submit"
    • @GowriSankar 如果回答了您的问题,请将其标记为已回答
    【解决方案3】:

    您的代码发生了变化。为 POST 表单添加 NAME 属性。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-04
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多