2017-02-05 6 views
-1

私はフォームを提出すると、データがデータベースから抜けていますが、エントリは空白になりますが、成功メッセージが表示されます。php SQLはデータベースに空のエントリを挿入します。

基本的に問題は$ sql文字列にあります。

SQLの文字列VALUESはエコーは問題ありませんが、データベースのエントリは空白です。

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
$name = (string)$_POST["name"]; 
$email = (string)$_POST["email"]; 
$phone = (string)$_POST["phone"]; 

$sql = "INSERT INTO myTable (name,email,phone) 
VALUES ('{$name}','{$email}','{$phone}')"; 


if ($conn->query($sql) === TRUE) { 
    echo "New record created successfully"; 
} else { 
    echo "Error: " . $sql . "<br>" . $conn->error; 
} 

$conn->close(); 
+0

これは非常にSQL-の注射を探します。 '$ sql'の実行時の実際の値は何ですか? – David

+0

フォームのHTMLを投稿できますか?そのメソッドをPOSTに設定しましたか? $ _POST、$ name、$ email、および/または$ phoneを印刷してみましたか?おそらく、単に成功メッセージを 'echo 'Createdレコード(' {$ name} '、' {$ email} '、' {$ phone} ')"; "に変更してPOSTデータを確認したり追加したりします: " print_r($ _ POST、true); ' –

答えて

0

引用符をリテラルに変更し、各フォームフィールドにIDを追加しました。また、(文字列)CASTも削除しました。

PHP:

$name =$_POST['name']; 
    $email =$_POST['email']; 
    $phone =$_POST['phone']; 

HTML:

<input type="text" id="name" name="name" placeholder="Name:"/><br/> 
    <input type="text" id="email" name="email" placeholder="Email:"/><br/> 
    <input type="text" id="phone" name="phone" placeholder="Phone Number:"/><br/> 
関連する問題