2016-05-15 112 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

是的,腳本工作正常,但你可以按沒有提交輸入提交,它會繼續插入空白數據,我試圖去做的是使查詢失敗,如果發佈數據爲空 –

回答

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']爲空時按下提交時,表單仍會插入 –