2016-03-29 5 views
2

Я знаю, что это уже было задано несколько раз. Один из них таков: https://stackoverflow.com/questions/18869513/php-insert-into-not-working Но попытка решения, данная этому, не работает для меня. Так что у меня есть эта домашняя страница:«INSERT INTO» не вставляет данные в базу данных

<html> 
<head> 
    <title>My First PHP Website</title> 
</head> 
<?php 
    session_start(); 
    if($_SESSION['user']){} 
    else{header("location:index.php");} 
    $user = $_SESSION['user']; 
?> 

    <body> 
     <h2>Homepage</h2> 
     <p>Hello 
      <?php Print "$user"?> 
     </p> 
     <a href="logout.php">Click Here to Logout</a> 
     <br> 
     <br> 
     <form action="add.php" method="POST"> 
      Add more to list: 
      <input type="text" name="details"> 
      <br> Public Post? 
      <input type="checkbox" name="public[]" value="yes"> 
      <br> 
      <input type="submit" value="Add to List"> 
     </form> 
     <h2 align="center">My List</h2> 
     <table border="1px" width="100%"> 
      <tr> 
       <th>ID</th> 
       <th>Details</th> 
       <th>Edit</th> 
       <th>Delete</th> 
       <th>Public Posts</th> 
      </tr> 
      <?php 
       $connect = mysqli_connect("localhost","root","") or die(mysqli_error()); 
       mysqli_select_db($connect, "first_db") or die ("Cannot Connect to Database"); 
       $query = mysqli_query($connect,"SELECT * from list"); 
       while($row = mysqli_fetch_array($query)) 
       { 
        Print "<tr>"; 
         Print '<td align="center">'. $row['id'] . "</td>"; 
         Print '<td align="center">'. $row['details'] . "</td>"; 
         Print '<td align="center">'. $row['date_posted']." - ".$row['time_posted']."</td>"; 
         Print '<td align="center">'. $row['date_edited']." - ".$row['time_edited']."</td>"; 
         Print '<td align="center"><a href="edit.php">edit</a> </td>'; 
         Print '<td align="center"><a href="delete.php">delete</a> </td>'; 
         Print '<td align="center">'. $row['public']. "</td>"; 
        Print "</tr>"; 
       } 
      ?> 
     </table> 
    </body> 
</html> 

и эта страница действия:

<?php 
    session_start(); 
    if($_SESSION['user']){ 
    } 
    else{ 
     header("location:index.php"); 
    } 
    if($_SERVER["REQUEST_METHOD"] == "POST"){ 
     $connect = mysqli_connect("localhost","root",""); 
     $link = mysqli_connect("localhost","root","","first_db"); 
     $details = mysqli_real_escape_string($connect, $_POST['details']); 
     $time = strftime("%X"); 
     $date = strftime("%B %d, %Y"); 
     $decision ="no"; 
     mysqli_connect("localhost", "root","") or die(mysqli_error()); 
     mysqli_select_db($connect,"first_db") or die("Cannot connect to database"); 
     foreach($_POST['public'] as $each_check) 
     { 
      if($each_check !=null){ 
       $decision = "yes"; 
      } 
     } 
     mysqli_query ($link,"INSERT INTO list (details) VALUES ('$details')"); 

     header("location: home.php"); 
    } 
    else 
    { 
     header("location:home.php"); 
    } 
?> 

это якобы вставляя данные, введенные в моей базе данных, но, к сожалению, она не будет ничего делать. Я не могу найти решение для этого. Надеюсь, вы, ребята, могли бы мне помочь. Заранее спасибо!

table structure

+3

Почему вы используете 'mysqli_connect' дважды? Или нет, __ три раза! –

+2

'$ connect! = $ Link' путаница с переменной соединения – Saty

+0

, которая была другим вариантом, который я сделал, но попытка удалить это не изменит ничего, тем не менее он не вставляет данные. в базу данных phpmyadmin. – Richelle

ответ

0

Вам не нужно две переменные подключения $ подключения и $ ссылку. Используйте любой.

Кроме того, вы можете попробовать отладки.

mysqli_query ($link,"INSERT INTO list (details) VALUES ('".$details."')") or die(mysqli_error($link)); 
+0

«Поле« date_posted »не имеет значения по умолчанию» --- эта ошибка вышла – Richelle

+0

Что такое тип данных вашего столбца date_posted? –

+0

это varchar (30) – Richelle

0

Попробуйте

$details = "'".$details."'"; 
mysqli_query ($link,"INSERT INTO list (details) VALUES ($details)"); 
+0

:(еще не работал – Richelle

+0

Какая ошибка? – mike

+0

нет ошибки, но все равно не вставлять данные в db – Richelle

0

Попробуйте это:

if($_SERVER["REQUEST_METHOD"] == "POST") 
{ 
     // $connect = mysqli_connect("localhost","root",""); 
     // mysqli_select_db($connect,"first_db") or die("Cannot connect to database"); 

EDIT:

$link = mysqli_connect("localhost","root","","first_db"); 
$details = mysqli_real_escape_string($link, $_POST['details']); 
$time = strftime("%X"); 
$date = strftime("%B %d, %Y"); 
$decision ="no"; 

foreach($_POST['public'] as $each_check) 
{ 
    if($each_check !=null){ 
     $decision = "yes"; 
    } 
} 
mysqli_query ($link,"INSERT INTO list (details) VALUES ('".$details."')"); 

     header("location: home.php"); 
} 
+0

я сожалею, все еще не работал :( – Richelle

+0

@Richelle, вы получаете какую-либо ошибку? – Nehal

+0

Прошу изменить мой отредактированный код @Richelle – Nehal

0

есть много вопросов, с двумя страницами. Попытайтесь немного его очистить.

Для вашей страницы формы ...
положить на самую верхнюю часть страницы, над HTML тегом:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
ob_start(); 
session_start(); 

if(!$_SESSION['user']){ 
header("location:index.php"); 
exit(); 
} 
$user = $_SESSION['user']; 

Удалить их откуда курсе у вас есть. Первые две строки сообщают вам о любых ошибках в вашем PHP-коде.

Обратите внимание на часть !$_SESSION. Это гласит: если sessios НЕ установлен, сделайте что-нибудь. Вам здесь не нужен, используя этот синтаксис.

Всегда exit() после перенаправления заголовка.

Теперь, для вашей второй страницы (submit), я много меняю.

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 
session_start(); 
// check if session is set and if $_POST is there.. if any of these checks fails, redirect to index page 
if(!$_SESSION['user'] || !isset($_POST)){ 
    header("Location: index.php"); 
    exit(); 
} 

// db connection 
$connect = mysqli_connect("localhost", "root", "", "first_db"); 
if (!$connect) { echo 'Connect to DB Error ('.mysqli_connect_errno().')'. mysqli_connect_error(); exit(); } 
mysqli_query($connect, " SET NAMES 'utf8' "); 

// check/sanitize $_POST variables 
$details = ''; 
if (isset($_POST['details'])) { $details = $_POST['details']; } 

// declare other variables defaults values 
$time = strftime("%X"); 
$date = strftime("%B %d, %Y"); 
$decision = "no"; 

// insert data to db 
$query = "INSERT INTO list (details) VALUES ('".mysqli_real_escape_string($connect, $details)."') "; 
$result = mysqli_query($connect, $query) or die(mysqli_error($connect)); 


// if all are ok, sent user to new page 
header("location: home.php"); 

При возникновении ошибки изображение появится на экране.

Надеюсь, что это вас.

+0

«Поле« date_posted »не имеет значения по умолчанию» - - это вышло – Richelle

+0

@Richelle, это должно быть на вашей странице формы. Вам нужно определить свои переменные или убедиться, что они не пусты или установить значения по умолчанию или проверить орфографию. – andrew

+0

Я удалил другие переменные на данный момент, потому что хочу сосредоточиться на том, как база данных будет получать данные, но все же ... ошибка: (я не знаю, является ли это ошибкой или что, но я действительно хотел знать решение – Richelle

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