2016-03-15 1 views
2

Так в настоящее время, это код у меня есть

index.php:

 <form action="insert.php" method="post"> 
      Comments: 
      <input type="text" name="comment"> 
      <input type="submit"> 
     </form> 

insert.php:

<?php 

include ('index.php'); 

$user = 'x'; 
$password = ''; 
$db = 'comment_schema'; 
$host = 'localhost'; 
$port = 3306; 

/* Attempt MySQL server connection. Assuming you are running MySQL 
server with default setting (user 'root' with no password) */ 

$link = mysqli_connect("localhost", "x", "", "comment_schema"); 

// Check connection 
if($link === false){ 
    die("ERROR: Could not connect. " . mysqli_connect_error()); 
} 

// Escape user inputs for security 
$comment = mysqli_real_escape_string($link, $_POST["comment"]); 
$sql = "INSERT INTO parentComment(ID, Comment) VALUES('','$comment')"; 

// attempt insert query execution 
if(mysqli_query($link, $sql)){ 
    echo $comment; 
} else{ 
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
} 

// close connection 
mysqli_close($link); 

Когда я делаю echo $ comment, ничего не распечатывается. Однако, если я что-то вроде эхо «привет», это работает. Я думаю, что почему-то $ _POST не узнается. Любые предложения, чтобы сделать эту работу, или если я делаю это неправильно.

Моя цель - ввести пользовательский ввод и вставить в базу данных на phpmyadmin. В настоящее время он может вставляться, однако он вставляет пустое значение. У меня только две колонки в моей базе данных. Столбец ID и Комментарий. Идентификатор автоматически увеличивается. Комментарий - это то, что я получаю от пользователя.

+1

почему вы в том числе index.php снова? – sudhakar

+0

Посмотрите, что 'var_dump()' prints –

+0

ничего не распечатывается. Пусто. –

ответ

0

Проверить, как ваши данные вид данных в базе данных (я предпочитаю Varchar()). Попробуйте, как это: -

<form action="insert.php" method="POST"> 
       Comments: 
       <input type="text" name="comment"/> 
       <input type="submit" name="submit" value="submit"> 
      </form> 

<?php 

include ('index.php'); 

$user = 'x'; 
$password = ''; 
$db = 'comment_schema'; 
$host = 'localhost'; 
$port = 3306; 


$link = mysqli_connect("localhost", "x", "", "comment_schema"); 


if($link === false){ 
    die("ERROR: Could not connect. " . mysqli_connect_error()); 
} 


$comment = mysqli_real_escape_string($link, $_POST["comment"]); 
$sql = "INSERT INTO parentComment(ID, Comment) VALUES('','$comment')"; 


if(mysqli_query($link, $sql)){ 
    echo $comment; 
} else{ 
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
} 

// close connection 
mysqli_close($link); 
+0

Нет никакой разницы между вашим кодом и кодом OP. –

+0

эй, спасибо за предложение, но, к сожалению, он все еще не работает. значение не вводится. datatype комментария varchar –

0

попробовать это

<?php 
    $user = 'x'; 
    $password = ''; 
    $db = 'comment_schema'; 
    $host = 'localhost'; 

    $link = mysqli_connect($host, $user, $password, $db); 

    if($link === false){ 
     die("ERROR: Could not connect. " . mysqli_connect_error()); 
    } 

    // Escape user inputs for security 
    $comment = mysqli_real_escape_string($link, $_POST["comment"]); 
    $sql = "INSERT INTO parentComment(ID, Comment) VALUES(NULL,'$comment')"; 

// attempt insert query execution 
if(mysqli_query($link, $sql)){ 
    echo $comment; 
} else{ 
echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
} 

// close connection 
mysqli_close($link); 
+0

:(все еще не работает –

0

Некоторые предложения отладки:

  • var_dump($_POST); // перед mysqli_real_escape_string
  • var_dump($comment); // после mysqli_real_escape_string

mysqli api может не работать хорошо! Закрепить запрос как

  • $sql = "INSERT INTO parentComment(ID, Comment) VALUES('','".$comment."')";
  • echo $sql; // проверить ваш синтаксис SQL
  • echo mysqli_error($link); // у вас есть ошибки
  • Посмотрите на свой файл .htaccess увидеть, если у вас есть <Limit POST> тег
  • Remove эта линия include ('index.php');. Предположительно, эти два файла находятся в одной папке. Поэтому просто запустите index.php. Пробовал код без этой строки, и это сработало для меня.
+0

, поэтому я пробовал все эти предложения. Что я получил от этого, так это то, что мой POST пуст, а также мой комментарий. Также эхом sql выводит все с пустым комментарием переменная. В принципе, все пусто, и я не уверен, почему. Что такое коррекция @bill, на которую вы ссылаетесь? –

+0

Это была коррекция запросов, добавленная в мой ответ! –

0

Использование ниже кода: -

include ('index.php'); 

$user = 'x'; 
$password = ''; 
$db = 'comment_schema'; 
$host = 'localhost'; 
$port = 3306;  

$link = mysqli_connect("localhost", "x", "", "comment_schema"); 

if (mysqli_connect_errno()) { 
    printf("Connect failed: %s\n", mysqli_connect_error()); 
    exit(); 
} 

if(!empty($_POST["comment"])){ 
    $comment = mysqli_real_escape_string($link, $_POST["comment"]);  
    // Escape user inputs for security 
    $sql = "INSERT INTO parentComment(ID, Comment) VALUES('','$comment')"; 
    $result = mysqli_query($link, $sql); 
    // attempt insert query execution 
    if($result){ 
     echo $comment; 
    } else{ 
     echo "ERROR: Could not able to execute $sql. " . mysqli_error($link); 
    } 
    // close connection 
    mysqli_close($link); 

}else{ 
    die('comment is not set or not containing valid value'); 
} 

Надеется, что это поможет :-)

+0

:(Это не работает. else и выводит «комментарий не установлен или не содержит допустимого значения» спасибо за вашу помощь, но все же не знаю, в чем проблема. –

+0

Вы передаете действительное значение в поле комментариев? –

+0

Да, я просто попытался прокомментировать слово «привет» в мою форму. Это должно быть действительно. Я установил комментарий в моей базе данных varchar –