2016-05-15 2 views
-3

私の挿入スクリプトに問題があります。私はmysqlに空のデータを挿入するスクリプトを止めさせるようには思えません。私は空の関数を使ってみました。しかしそれでも、それはまだデータベースにそれを提出する。ここに私のコード:MYSQLI - スクリプトが空のデータを挿入し続ける

<?php 


    // Connect to MySQL 
    $mysqli = new mysqli('localhost', 'xxx', 'xxx', 'xxx'); 


    if ($mysqli->connect_error) { 
    die('Connect Error: ' . $mysqli->connect_errno . ': ' . $mysqli->connect_error); 
    } 



if (!empty($_POST)) { 

    // Insert into posts 
    $sql = "INSERT INTO posts (title, postdata) VALUES ('{$mysqli->real_escape_string($_POST['title'])}', '{$mysqli->real_escape_string($_POST['data'])}')"; 
    $insert = $mysqli->query($sql); 

    // Print response from MySQL 
    if ($insert) { 
    echo "Success! Row ID: {$mysqli->insert_id}"; 
    } else { 
    die("Error: {$mysqli->errno} : {$mysqli->error}"); 
    } 

    // Close our connection 
    $mysqli->close(); 
} 
?> 

<form action="" method="POST"> 
<br> 
<br> 
Title: 
<br> 
<input type="text" name="title"> 

<br> 
<br> 
Post: 
<br> 
<textarea name="data" id="data"></textarea> 
<br> 
<br> 
<input type="submit" name="submit"> 
</form> 
+1

投稿データには取得しようとしているデータが含まれていますか?また、値をエスケープしてクエリに入れるのではなく(たとえそれをエスケープしないほうが安全だとしても安全でない可能性があります)、プリペアドステートメントを使用することができます。 – Jite

+0

'$ sql'はどのように出力されますか? – chris85

+0

はい、スクリプトは正常に動作しますが、何も入力しないでsubmitを押すと、空のデータを挿入したままになります。投稿データが空の場合にクエリを失敗させることです。 –

答えて

1

あなたのコードは、ページが読み込まれると自動的にデータベースに挿入されます。

回避策として、if(isset($_POST['submit'])) {を追加する必要があります。これは、フォームの送信時にのみデータベースに挿入されます。

コードは$_POST['title']が空であるかどうかをチェックし、そうであればエラーを表示します。

if(isset($_POST['submit'])) { 
    if(empty($_POST['title'])) { 
     echo 'Please fill in the field.'; 
    }else{ 
     $sql = "INSERT INTO posts (title, postdata) VALUES ('{$mysqli-real_escape_string($_POST['title'])}', '{$mysqli-real_escape_string($_POST['data'])}')"; 
     $insert = $mysqli->query($sql); 
    } 
} 

あなたformを供給することができなかったとして、私はsubmitボタンの名前が提出されていることを推測しています。

+0

空のデータフィールドは停止しません。 – chris85

+0

はいどうもありがとうございました。 –

+0

上記のように、変数$ _POST ['title']と$ _POST ['title']が空のときにsubmitを押すと、フォームがまだ挿入されます –

関連する問題