【问题标题】:Cannot insert data into database (php/mysqli) (Phpstorm 9/Wamp) [duplicate]无法将数据插入数据库(php/mysqli)(Phpstorm 9/Wamp)[重复]
【发布时间】:2016-04-05 07:58:12
【问题描述】:

我在将我从我的一个表单中收集的数据插入我的数据库时遇到了问题。 每个表单都将数据添加到数据库中的不同表中(一个到用户,一个到任务)。

我使用一种表格进行注册,我将粘贴下面代码的重要部分(这个有效)。 这是Register.php 文件的表单部分

<form method="post" action="register_code.php">
<div class="FormElement">
    <input name="user_name" type="text" class="Tfield" id="user_name" required placeholder="User Name">
</div>

<div class="FormElement">
    <input name="password" type="password" class="Tfield" id="password" required placeholder="Password">
</div>

<div class="FormElement">
    <input name="email" type="email" class="Tfield" id="email" required placeholder="E-mail">
</div>

<div class="FormElement">
    <input name="first_name" type="text" class="Tfield" id="first_name" required placeholder="First Name">
</div>

<div class="FormElement">
    <input name="last_name" type="text" class="Tfield" id="last_name" required placeholder="Last Name">
</div>

<div class="FormElement">
    <input type="submit" id="Register" name="Register" value="Register" class="button">
</div>

这是register_code.php 文件

  <?php
require "DBconnect.php";
$post = $_POST;
if(isset($post)) {
    session_start();
    $UName = $post['user_name'];
    $PW = md5($post['password']);
    $FName = $post['first_name'];
    $LName = $post['last_name'];
    $Email = $post['email'];

    $sql = $con->query("INSERT INTO users (user_name, password, email, first_name, last_name) VALUES ('$UName','$PW','$Email', '$FName', '$LName')");
    if($sql)
        header("Location: Registration_successful.php");
    else
        echo "Please try again to register";
}

include 'Register.php';

还有我用来将数据添加到另一个表(命名任务)的另一种形式。由于某种原因,我从此文件中收集的数据不会插入到我的数据库中。

这是 Add_Task.php 文件的表单部分:

    <form method="post" action="Add_Task_code.php">

    <div class="FormElement">
        <input name="TName" type="text" class="Tfield" id="TName" required placeholder="Task name">
    </div>

    <div class="FormElement">
        <input name="TDesc" type="text" class="TextField" id="TDesc" required placeholder="Task summary">
    </div>

    <div class="FormElement">
        <input type="submit" id="Submit" name="Submit" value="Submit" class="button">
    </div>
</form>

这是Add_Task_code.php文件中的代码

  <?php
require 'DBconnect.php';

$post=$_POST;

if(isset($post))
{
    $TaskName = $post['TName'];
    $TaskDesc = $post['TDesc'];

    $sqltask="INSERT INTO tasks ('TName','TDesc') VALUES ('$TaskName','$TaskDesc')";

    if ($con->query($sqltask))
        header("Location: Tasks.php");
    else
        header("Location: Add_Task.php");
}
?>

文件DBconnect.php 仅包含以下内容:

   <?php

$con= mysqli_connect("localhost", "root","","first_app")

?>

问题在于,即使两种形式的代码相似,也只有其中一种可以工作。每次我运行 Add_Task.php 文件时,它都会将我重定向到同一页面(按照我的指示),因为它不会向数据库添加任何内容。

我还检查了表格,以防它添加了一些东西,但它没有。

【问题讨论】:

  • quotes 换成table and column 名称,而不是使用backtick。这一行的问题tasks ('TName','TDesc')
  • 请查看您的 http 服务器错误日志文件。在那里您可以阅读问题所在,而不必猜测
  • 旁注:您的代码对 sql 注入开放。

标签: php database forms mysqli wampserver


【解决方案1】:

请在表任务中将您的 primary_key(id) 设置为自动增量。如果你不设置它可能是可能的。 并更改此行

$sqltask="INSERT INTO tasks ('TName','TDesc') VALUES ('$TaskName','$TaskDesc')";

像这样:

$sqltask="INSERT INTO tasks (TName,TDesc) VALUES ($TaskName,$TaskDesc)";

【讨论】:

  • 感谢大家的反馈,特别感谢 Vasanth Kumar 和 jilesh 的回答。一旦我从这里的 2 个元素('TName','TDesc')中删除了反引号,它就起作用了。而且我还使用了这个 echo "Error:" 。 $sql任务。 “
    ”。 mysqli_error($conn);非常有用的线来弄清楚为什么它一开始就不起作用。
【解决方案2】:

您在代码中混合了OOP styleProcedural Style

您在DBconnect.php 文件中使用了Procedural Style。而且您的连接文件中缺少;

DBconnect.php 文件应该是:

<?php    
   $con= mysqli_connect("localhost", "root","","first_app");    
?>

register_code.php 代码应该是:

<?php
require "DBconnect.php";
$post = $_POST;
if(isset($post)) {
    session_start();
    $UName = $post['user_name'];
    $PW = md5($post['password']);
    $FName = $post['first_name'];
    $LName = $post['last_name'];
    $Email = $post['email'];

    $sql = mysqli_query($con,"INSERT INTO users (user_name, password, email, first_name, last_name) VALUES ('$UName','$PW','$Email', '$FName', '$LName')");
    if($sql)
        header("Location: Registration_successful.php");
    else
        echo "Please try again to register";
}
include 'Register.php';

Add_Task_code.php 文件代码应该是:

<?php
require 'DBconnect.php';

$post=$_POST;

if(isset($post))
{
    $TaskName = $post['TName'];
    $TaskDesc = $post['TDesc'];

    $sqltask="INSERT INTO tasks ('TName','TDesc') VALUES ('$TaskName','$TaskDesc')";

    if (mysqli_query($con,$sqltask))
        header("Location: Tasks.php");
    else
        header("Location: Add_Task.php");
}
?>

【讨论】:

    【解决方案3】:

    尝试进行以下更改并查看实际错误是什么。然后调试您的代码。

    if($_SERVER['REQUEST_METHOD']=='POST')
    {
       $TaskName = $post['TName'];
       $TaskDesc = $post['TDesc'];
    
       $sqltask="INSERT INTO tasks ('TName','TDesc') VALUES ('$TaskName','$TaskDesc')";
    
       if ($con->query($sqltask))
         echo "Successfully Inserted";
       else
         echo "Error: " . $sqltask. "<br>" . mysqli_error($conn);
    }
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 2013-08-24
      • 2017-05-18
      • 1970-01-01
      • 2013-05-26
      相关资源
      最近更新 更多