2016-09-22 16 views
0

私のデータベース名はloginで、usersという3つのカラム: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変数は、フォームから転記された値ではなく、trueまたはfalseのいずれかに設定されます。

isset()の値に応じて条件付きで値を設定することを検討してください。

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の):
私はいくつかの検証を含めるようにternary operatorを使用して好みますか? (expr2):(expr3)は、expr1がTRUEと評価された場合はexpr2に、expr1がFALSEと評価された場合はexpr3に評価されます。

関連する問題