将表单数据发布到数据库时发生PHP错误

将表单数据发布到数据库时发生PHP错误,php,html,mysql,database,Php,Html,Mysql,Database,我试图使一个广告后的形式添加数据到数据库。页面不断重新加载并要求填写所有详细信息。我似乎找不到错误,我在谷歌和youtube上做了很多搜索,都没有结果。请帮忙 <?php session_start(); include'db.php'; $name = $_POST['name']; $email = $_POST['email']; $phoneNumber = $_POST['mobile-num']; $photos = $_POST

我试图使一个广告后的形式添加数据到数据库。页面不断重新加载并要求填写所有详细信息。我似乎找不到错误,我在谷歌和youtube上做了很多搜索,都没有结果。请帮忙

<?php
    session_start();
    include'db.php';
    $name = $_POST['name'];
    $email = $_POST['email'];
    $phoneNumber = $_POST['mobile-num'];
    $photos = $_POST['fileselect'];
    $town = $_POST['location'];
    $category = $_POST['category'];
    $adTitle = $_POST['title'];
    $adDescription = $_POST['description'];

    if(isset($_SESSION['email']))
    {
        if($email != "" && $name != "" && $phoneNumber != "" && $photos != "" && $town != "" && $category != "" && $adTitle !="" && $adDescription != "")
        {
            $name = stripslashes($name);
            $email = stripslashes($email);
            $phoneNumber = stripslashes($phoneNumber);
            $photos = stripslashes($photos);
            $town = stripslashes($town);
            $adTitle = stripslashes($adTitle);
            $category = stripslashes($category);
            $adDescription = stripslashes($adDescription);

            $name = mysqli_real_escape_string($connection,$name);
            $email = mysqli_real_escape_string($connection,$email);
            $phoneNumber = mysqli_real_escape_string($connection,$phoneNumber);
            $photos = mysqli_real_escape_string($connection,$photos);
            $town = mysqli_real_escape_string($connection,$town);
            $adTitle = mysqli_real_escape_string($connection,$adTitle);
            $category = mysqli_real_escape_string($connection,$category);
            $adDescription = mysqli_real_escape_string($connection,$adDescription);
            $imagePath = "images/".basename($_FILES['fileselect']['MAX_FILE_SIZE']);
            $photo = $_FILES['fileselect']['MAX_FILE_SIZE'];
            $date = date("j F Y");



            if(filter_var($email,FILTER_VALIDATE_EMAIL))
            {
                mysqli_query($connection, "SELECT email,ad-title,ad-category,ad-description,Photos,Name,Mobile-Num,Town,date from ads");
                $insertQuery = mysqli_query($connection, "INSERT INTO ads(email,ad-title,ad-category,ad-description,Photos,Name,Mobile-Num,Town,date) 
                                                            VALUES('$email','$adTitle','$category','$adDescription','$photo','$name','$phoneNumber','$town','$date')");
                header("Location: /profile.php");
            }
            else
                $_SESSION['errorMessage'] = "Please check email pattern";
                header("Location: /post-ad.php");
        }
        else
            $_SESSION['errorMessage'] = "Please input all the required details";
            header("Location: /post-ad.php");
    }
    else
        header("Location: /login.php");

?>  

这就是PHP代码。
因为我不太擅长Stackoverflow,所以我在格式化我想在这里发布的html表单代码时遇到了问题。我将附加一个图像

不确定为什么要运行SELECT,因为您似乎对它不做任何操作,也没有参数。但是插入应该是

$insertQuery = mysqli_query($connection, "INSERT INTO ads(email,`ad-title`,`ad-category`,`ad-description`,`Photos`,`Name`,`Mobile-Num`,`Town`,`date`) 
                                                            VALUES('$email','$adTitle','$category','$adDescription','$photo','$name','$phoneNumber','$town','$date')");
如果列名中有连字符,则应将其括在后面的记号中,我建议(如果不是太晚的话)删除连字符并使用下划线


您还应该在运行任何SQL时检查错误,并对其进行某种处理。

感谢大家的帮助。很抱歉让你承受了这么大的压力。我检查了我的数据库结构,发现一个列的类型错误,导致无法执行sql insert查询。很抱歉……

使用事先准备好的语句,您的代码将更加整洁和简短。要找出问题所在,请删除这些重定向!所以错误是验证,对吗?^这是。只需注释掉所有
header()
-函数,并查找任何错误。要显示SQL错误,可以添加`or die(mysqli_error());`在您的
mysqli\u查询()的末尾,
。可能有助于。。。如果您有PHP MyAdmin打开SQL并尝试插入语句,看看它是否有效。您可以用它来解决查询中的问题。@e4c5我是PHP新手。请为我指出正确的方向,在那里我可以获得最佳实践的资源。ThanksI删除了Select QUERY,因为它没有用,从代码和数据库本身中的数据库列名中删除了连字符。仍然不起作用。我只是得到一张空白的白纸。