我的插入脚本有问题。我似乎无法让我的脚本停止将空数据插入到mysql中。我尝试过使用!empty函数。但它仍然将其提交到数据库中。这是我的代码:
<?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>
答案 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
按钮的名称已提交。