私の挿入スクリプトに問題があります。私は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>
投稿データには取得しようとしているデータが含まれていますか?また、値をエスケープしてクエリに入れるのではなく(たとえそれをエスケープしないほうが安全だとしても安全でない可能性があります)、プリペアドステートメントを使用することができます。 – Jite
'$ sql'はどのように出力されますか? – chris85
はい、スクリプトは正常に動作しますが、何も入力しないでsubmitを押すと、空のデータを挿入したままになります。投稿データが空の場合にクエリを失敗させることです。 –