2014-10-03 2 views
-2

Я пытаюсь отправить данные в таблицу в моей базе данных, но нет сообщений об ошибках относительно того, почему данные не отправлены. Я вставил данные в таблицу в phpmyadmin, и эти данные печатаются с результатом во время цикла, но данные не будут отправляться в таблицу.Оператор INSERT INTO не отправляет данные в таблицу

<!-- form to take input--> 
    <form name='form1' method='post'> 
    Name: 
    <input type='text' name='Name' id='name' /> <br /> 
    Comment: 
    <input type='text' name='Comment' id='comment' /> <br /> 
    <input type="submit" name='submit' value="Submit" id='submit'> 
    </form> 
    <!-- start php--> 
    <?php 
      if(isset($_POST['submit'])) 
      { 
       $name = $_POST['Name']; 
       $comment = $_POST['Comment']; 
      } 

      $con = mysqli_connect("localhost", "kodie", "hill1124", "comments"); 
      if(mysqli_connect_errno()) 
      { 
       echo "Failed to connect to MySql: ". mysqli_connect_error(); 
      } 

      mysqli_query($con, "INSERT INTO commenttable VALUES ('$name','$comment',NOW()"); 
      $query = "SELECT * FROM commenttable"; 
      $result = mysqli_query($con, $query); 
      $hash = $result; 
      echo "<table>"; 
      if($hash = NULL) 
      { 
       echo "null"; 
      } 
      while($row = mysqli_fetch_array($result)) 
      { 
      echo "<tr><td>" . $row['Name'] . "</td><td>" . $row['comment'] . "</td><td>" . $row['timestamp'] . "</td></tr>"; //$row['index'] the index here is a field name 
      } 

      echo "</table>"; 

      mysqli_close($con); 

    ?> 

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

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

+2

Put 'или умереть (mysqli_error ($ con)) 'после' mysqli_query (...) ', поэтому вы видите сообщение об ошибке из MySQL. – Barmar

+0

Проблема, вероятно, в том, что '$ comment' содержит символ цитаты, который нарушает ваш синтаксис. Вы должны использовать подготовленный запрос или 'mysqli_real_escape_string'. – Barmar

+1

Вам не хватает тег parz mysqli_query ($ con, "INSERT INTO commenttable VALUES ('$ name', '$ comment', NOW())"); –

ответ

0

Вы пропускаете закрытие ) в конце Вашего insert заявления:

mysqli_query 
    ($con, 
    "INSERT INTO commenttable VALUES ('$name','$comment',NOW())"); 
    //            This one^
+0

Я заметил это раньше, но программа, которую я использовал для написания кода, закодировала его как закрытую. Это устранило проблему. Спасибо! –

0

См линии mysqli_query($con, "INSERT INTO commenttable VALUES ('$name','$comment',NOW()");

Вы havnt закрыли mysqli_query().

Это должно быть mysqli_query($con, "INSERT INTO commenttable VALUES ('$name','$comment',NOW()"));

-1

Отсутствует скобка в

mysqli_query($con, "INSERT INTO commenttable VALUES ('$name','$comment',NOW()"); 

должен быть

mysqli_query($con, "INSERT INTO commenttable VALUES ('$name','$comment',NOW()")); // missing) 
+2

Пожалуйста, используйте в своих ответах блоки кода. –

4

Для получения данных INSERT в вашей базе данных вам необходимо настроить запрос на вставку. Что у вас сейчас:

mysqli_query($con, "INSERT INTO commenttable VALUES ('$name','$comment',NOW()"); 

Должно быть

mysqli_query($con, "INSERT INTO commenttable VALUES ('$name', '$comment', NOW())"); 

Вы должны также рассмотреть возможность использования mysqli_real_escape_string для предотвращения SQL-injection

Итак:

$name = $_POST['Name']; 
$comment = $_POST['Comment']; 

Становится:

$name = mysqli_real_escape_string($con, $_POST['Name']); 
$comment = mysqli_real_escape_string($con, $_POST['Comment']); 

Вы также можете посмотреть на следующее:

UPDATE

<!-- form to take input--> 
<form action="" name="form1" method="post"> 
    Name: 
    <input type="text" name="Name" id="name"> <br> 
    Comment: 
    <input type="text" name="Comment" id="comment"> <br> 
    <input type="submit" name='submit' value="Submit" id="submit"> 
</form> 
<!-- start php--> 

<?php 
if($_POST) { 
    $con = mysqli_connect("localhost", "kodie", "hill1124", "comments"); 

    $name = mysqli_real_escape_string($con, trim($_POST['Name'])); 
    $comment = mysqli_real_escape_string($con, trim($_POST['Comment'])); 

    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySql: " . mysqli_connect_error(); 
    } 

    if (!empty($name) && !empty($comment)) { 
     $query = mysqli_query($con, "INSERT INTO commenttable VALUES ('$name','$comment',NOW())"); 

     // Check if the query succeeded 
     if (mysqli_affected_rows($con)) { 
      $query = "SELECT * FROM commenttable"; 
      $result = mysqli_query($con, $query); 
      $hash = $result; 
      echo "<table>"; 
      } 
     } else { 
      echo 'Something went wrong: '. mysqli_error($con); // Echo the error (You could replace echo with die()) 
     } 
    } 

    if ($hash = NULL) { 
     echo "null"; 
    } 

    while ($row = mysqli_fetch_array($result)) { 
     echo "<tr><td>" . $row['Name'] . "</td><td>" . $row['comment'] . "</td><td>" . $row['timestamp'] . "</td></tr>"; //$row['index'] the index here is a field name 
    } 

    echo "</table>"; 

    mysqli_close($con); // this is not necessary 
} 
?> 
+0

, если таблица содержит только 3 столбца, не требуется помещать столбцы в запрос. –

+0

@FunkDoc oke отредактировал это – SuperDJ

+0

cool. это правильный ответ и хорошо указывать на выход из входов. –

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