2015-11-17 2 views
-4

привет это задание от нашего класса, и у меня есть эта проблема с вставкой данных в мою базу данных под названием userdb. У меня есть форма, которая принимает 3 поля: имя, тема и сообщение. И в моем localhost/phpmyadmin у меня есть таблица с именем data, которая имеет 5 полей: userID (auto increment) (int), имя (varchar), subject (varchar), сообщение (текст) и Timestamp (дата). И когда я отправляю данные в свою форму, эта ошибка появляется: У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «джон !, 15-11-17)» в строке 1Неизвестный столбец в 'списке полей'

<form action="<?php $_SERVER['PHP_SELF']; ?>" method="post"> 

     Name : &nbsp&nbsp&nbsp<input type="text" name="name" /> <br> 
     Subject : &nbsp<input type="text" name="subject" > <br> Message : 
     <br> <textarea name="message" type="text" style="width:200px; height:100px"></textarea> <br> 
     <input type="submit" name="btnSubmit" /> 
    </form> 

</div> 


<?php 
if($_POST) { 
    $name = $_POST['name']; 
    $subject = $_POST['subject']; 
    $message = $_POST['message']; 
    $date = date("y-m-d"); 


    $user = "jarvs"; 
    $pass = "strumandplay"; 
    $db="userdb"; 
    $conn = mysqli_connect("localhost", $user, $pass, $db); 

    if(!mysqli_connect()){ 
     die("failed to connect to server " . mysqli_connect_error()); 
    }else{ 
     echo "connected" . "<br>"; 
    } 

    $query = "INSERT INTO data (userID, Subject, Message, Timestamp) VALUES (1, $subject, $message, $date)"; 


    if (mysqli_query($conn, $query)) { 
     echo "New record created successfully"; 
    } else { 
     echo "Error: " . $query . "<br>" . mysqli_error($conn); 
    } 

    mysqli_close($conn); 

} 

?> 

спасибо за ответы.

+0

Ошибка является прямым результатом уязвимостей SQL-инъекций в вашем коде. Вы пытаетесь выполнить ввод пользователя * в качестве кода * в своей базе данных. Вы могли бы * устранить проблему в краткосрочной перспективе, окружив свои строковые значения кавычками в вашем SQL-коде. Но правильным решением было бы рассматривать пользовательские значения как * значения *, а не как * код * и использовать подготовленные заявления: http://php.net/manual/en/pdo.prepared-statements.php – David

+0

Это было бы так хорошо, если люди сначала Google'd свои ошибки, прежде чем отправлять вопросы, которые были заданы снова и снова. –

+0

$ query = "INSERT INTO data (userID, Name, Subject, Message, Timestamp) VALUES (1, $ Name, $ subject, $ message, $ date)"; –

ответ

1

эхо ваш запрос $ var, чтобы узнать, что случилось. Вы увидите, что строки не указаны:

Делают это так:

$query = "INSERT INTO data (userID, Subject, Message, Timestamp) VALUES (1, '$subject', '$message', '$date')"; 

Следующий шаг будет избежать $ субъекта, $ сообщение и $ дату не врезаться сценарий, когда они содержат цитата '.

+0

Я этого не понимал. начинающий php здесь. Спасибо большое! –

+0

добро пожаловать. Пожалуйста, отметьте мой ответ как «принятый ответ», если он вам подходит. –

+0

1 мин. Сэр принять –

Смежные вопросы