2016-09-22 119 views
0

我的數據庫名是login並且有一個名爲users的表有三列:name,id和post。當我點擊提交按鈕時,id會增加並創建一條新記錄,但在這些字段中不會創建實際數據。請幫助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()錯誤 –

回答

2

PHP的isset()返回一個布爾值。因此,您的$user_name$post變量將分別設置爲truefalse,而不是從表單中發佈的值。

考慮根據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 
    } 

} 

表達式(表達式1)? (expr2):如果expr1的計算結果爲TRUE,(expr3)的計算結果爲expr2,如果expr1的計算結果爲FALSE,則expr3的計算結果爲expr3。