防止没有输入的mysql查询

时间:2018-10-11 23:01:40

标签: php mysql

我有一段代码将用户的输入插入数据库:

Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("DB status: connection failed: " . $conn->connect_error);
} else {
    echo "DB status: connected";
}
?>
<html>
    <h1>Add data</h1>
    <form method="post">
        <p>Name: <input type="text" name="name"></p>
        <p>Goals scored in:</p>
        <p>14/15 <input type="text" name="14"></p>
        <p>15/16 <input type="text" name="15"></p>
        <p>16/17 <input type="text" name="16"></p>
        <p>17/18 <input type="text" name="17"></p>
        <button type="submit" name="save">save</button>
    </form>
    <?php
$sql = "INSERT INTO `goals` (`Name`, `14/15`, `15/16`, `16/17`, `17/18`) VALUES ('".$_POST["name"]."', '".$_POST["14"]."', '".$_POST["15"]."', '".$_POST["16"]."', '".$_POST["17"]."')";

$result = mysqli_query($conn,$sql);

?>

问题是,当我第一次加载页面时,它已经向数据库发送了0。如何防止这种情况发生?

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

将操作添加到表单,然后使用该操作发送sql查询。您可能还应该使用表单验证,要求填写一些字段,例如姓名。

        <p>Name: <input type="text" name="name" required></p>

Calling a particular PHP function on form submit

答案 1 :(得分:0)

在开始时添加以下代码以解决该问题:

if (isset($_POST['submit'])) 
{

}