PHP Вставка в базу данных MySQL не работает

0

Я пытаюсь ввести данные в базу данных MySQL. Я могу войти в базу данных. Тем не менее, всякий раз, когда я запускаю, появляется ошибка "Ошибка запроса базы данных 2".

Я подозреваю, что у меня возникли проблемы с SQL Query. Тем не менее, я проверил свой SQL-запрос несколько раз, но я не могу найти никаких ошибок. (еще нет)

Любая помощь приветствуется!

<!DOCTYPE HTML>
<html>
<head>
<title>Create Events</title>
<link rel="stylesheet" href="RegisterLogin.css">
</head>


 <?php
    session_start();
    if (isset($_SESSION['Username'])) {
        $Username=$_SESSION['Username'];

    }
?>
<body>


<?php
    //define variables and set to empty values
     $EventNameErr = $MembersAttending_Err = $EventDateErr = $LocationErr = $websiteErr = "";
     $EventName = $MembersAttending = $EventDate = $Location = $website = "";

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
         if (empty($_POST["EventName"])) {
            $EventNameErr = "A name for the event is required";
          } else {
            $EventName = test_input($_POST["EventName"]);  
          }

          if (empty($_POST["MembersAttending"])) {
            $MembersAttendingErr = "How many members are attending";
          } else {
            $MembersAttending = test_input($_POST["MembersAttending"]); 
          }

           if (empty($_POST["EventDate"])) {
            $EventDateErr = "The date of the event is required";
          } else {
            $EventDate = test_input($_POST["EventDate"]); 
          }

          if (empty($_POST["Location"])) {
            $LocationErr = "Location of the event is required";
          } else {
            $Location = test_input($_POST["Location"]); 
          }



        //continues to target page if all validation is passed
        if ( $EventNameErr ==""&& $MembersAttendingErr ==""&& $EventDateErr ==""&& $LocationErr == ""){
            // check if exists in database
            $dbc=mysqli_connect('localhost','testuser','password','Project')
            or die("Could not Connect!\n");
            $sql="SELECT * from Events WHERE EventName ='$EventName';";
            $result =mysqli_Query($dbc,$sql) or die (" Error querying database 1");
            $a=mysqli_num_rows($result);
            if ($a>0){
            $EventNameErr="Event Name already exists".$a;
            } else {

            $sql1="INSERT INTO Events VALUES(NULL,'$EventName','$MembersAttending','$EventDate','$Location');";
                $result =mysqli_Query($dbc,$sql1) or die (" Error querying database 2");
                mysqli_close();
            header('Location: /EventCreated.php');
            }

        }
    }

       // clears spaces etc to prep data for testing
    function test_input($data){
        $data=trim ($data); // gets rid of extra spaces befor and after
        $data=stripslashes($data); //gets rid of any slashes
        $data=htmlspecialchars($data); //converts any symbols usch as < and > to special characters
        return $data;
    }

?>
<h2 style="color:yellow" align="center"> Event Creation </h2>
<form method="POST" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" align="center" style="color:#40ff00">
    EventName: 
    <input type="text" name="EventName" value="<?php echo $EventName;?>"/>
    <span class="error">* <?php echo $EventNameErr;?></span>
    <br/><br/>

    Members:
    <input type="text"  name="MembersAttending" value="<?php echo $MembersAttending;?>"/>
    <span class="error">* <?php echo $MembersAttendingErr;?></span>
    <br/><br/>

    Date:
    <input type="text"  name="EventDate" value="<?php echo $EventDate;?>"/>
    <span class="error">* <?php echo $EventDateErr;?></span>
    <br/><br/>

    Location:
    <input type="text" name="Location" value="<?php echo $Location;?>"/>
    <span class="error">* <?php echo $LocationErr;?></span>
    <br/><br/>



    <input type="Reset"  name="Reset" value="Reset">
    <input type="submit" name="submit" value="Submit"/> 
</form>

</body>
</html>
  • 0
    or die('some useless message') тебе не поможет! Добавить ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); в начало вашего сценария. Это заставит любые ошибки mysqli_ генерировать исключение, которое вы можете увидеть в браузере, и другие ошибки также будут видны в вашем браузере.
  • 1
    Ваш сценарий широко открыт для атаки SQL-инъекцией Даже если вы экранируете входные данные, это небезопасно! Используйте подготовленные параметризованные операторы в API MYSQLI_ или PDO
Показать ещё 3 комментария
Теги:
database
sql-insert

1 ответ

-1

Я не уверен, что такое имя столбца, доступное в вашей таблице, но попробуйте выполнить следующий запрос,

Я получил имя столбца из вашего кода, я не уверен, что это правильно или неправильно. просто попробуйте.

$sql1="INSERT INTO Events (EventName,MembersAttending,EventDate,Location)
VALUES('$EventName','$MembersAttending','$EventDate','$Location');";
  • 0
    Это только исправляет ошибку, если ошибка с количеством столбцов, не соответствующих количеству значений. Если ошибка в первом столбце с ограничением UNIQUE / NOT NULL, это все равно не сработает. И если ошибка в SQL-инъекции одинарной кавычки, она все равно не будет работать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню