Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将数据插入数据库(php/mysqli)(Phpstorm 9/Wamp)_Php_Database_Forms_Mysqli_Wampserver - Fatal编程技术网

无法将数据插入数据库(php/mysqli)(Phpstorm 9/Wamp)

无法将数据插入数据库(php/mysqli)(Phpstorm 9/Wamp),php,database,forms,mysqli,wampserver,Php,Database,Forms,Mysqli,Wampserver,我在将从表单中收集的数据插入数据库时遇到问题。 每个表单将数据添加到数据库中的不同表中(一个添加到用户中,一个添加到任务中) 我使用一个表单进行注册,我将粘贴下面代码的重要部分(这一个正在工作)。 这是Register.php文件的组成部分 <form method="post" action="register_code.php"> <div class="FormElement"> <input name="user_name" type="text"

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

我使用一个表单进行注册,我将粘贴下面代码的重要部分(这一个正在工作)。 这是
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>
  <?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';
  <?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");
}
?>
和另一个用于将数据添加到另一个表中的表单(命名任务)。由于某种原因,我从该文件收集的数据将不会插入到我的数据库中

这是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>
文件
DBconnect.php
仅包含以下内容:

   <?php

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

?>

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


我还检查了表,以防它添加了一些内容,但没有添加。

请在表任务中将主键(id)设置为自动递增。如果不设置,则可能会发生。 换一条线

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

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

您在代码中混合了
OOP风格
过程风格

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

DBconnect.php文件应为:

<?php    
   $con= mysqli_connect("localhost", "root","","first_app");    
?>
<?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';
<?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");
}
?>

register_code.php代码应为:

<?php    
   $con= mysqli_connect("localhost", "root","","first_app");    
?>
<?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';
<?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");
}
?>

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

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);
}
?>
if($\u服务器['REQUEST\u METHOD']=='POST')
{
$TaskName=$post['TName'];
$TaskDesc=$post['TDesc'];
$sqltask=“插入任务('TName','TDesc')值('$TaskName','$TaskDesc')”;
如果($con->query($sqltask))
echo“成功插入”;
其他的
echo“Error:.$sqltask.
”.mysqli_Error($conn); } ?>
表和列
名称中结束
引号
,改为使用
倒勾
。这行任务('TName','TDesc')中存在问题。
请查看http服务器错误日志文件。在这里,您可以阅读问题所在,而无需猜测。旁注:您的代码对sql注入非常开放。感谢所有人的反馈,特别是Vasanth Kumar和jilesh的回答。一旦我从这里的两个元素('TName','TDesc')中删除了backticks,它就工作了。我也用了这个回音“错误:”$sqltask。“
”。mysqli_错误($conn);这句话很有帮助,可以解释为什么它一开始就不起作用。