2016-09-22 3 views
0

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

<?php 
$servername="localhost"; 
$username="root"; 
$password=""; 
$dbname="login"; 

$conn=new mysqli($servername,$username,$password,$dbname); 
if($conn->connect_error){ 
    die("connection error:".$conn->connect_error); 
}else{ 
    echo 'connected successfully'; 
} 
#defining varriables 
$user_name = isset($_POST['user_name']); 
$post = isset($_POST['post']); 

#connect this to login details and pick the userrname 

$sql="INSERT INTO posts(user_name,post) 
VALUES('$user_name','$post')"; 
if($conn->query($sql)===TRUE){ 
    echo "your post was published"; 
}?> 

данные формы

<form action="" method="post"> 
    <input type="text" name="user_name"/> 
    <input type="text" name="post"/> 
    <input type="submit" name="post to cdrone"/> 
    </form> 
+0

Вы используете isset() wrong –

ответ

2

РНР isset() возвращает логическое значение. Таким образом, ваши $user_name и $post переменных будут установлены либо true, либо false, а не значения, размещенные в вашей форме.

Рассмотрите возможность установки значений условно, в зависимости от значения isset().
Я предпочитаю использовать ternary operator включать некоторые проверки:

if (!empty($_POST)) { 

    $user_name = !empty(trim($_POST['user_name'])) ? trim($_POST['user_name']) : false; 
    $post = !empty(trim($_POST['post'])) ? trim($_POST['post']) : false; 

    if (!$user_name) { 
    echo "User Name is required."; 
    } elseif (!$post) { 
    echo "Post is required."; 
    } else { 
    // insert into database 
    } 

} 

выражение (expr1)? (expr2): (expr3) вычисляется как expr2, если expr1 имеет значение TRUE и expr3, если expr1 оценивается как FALSE.