php - 将空字符串保存到数据库

标签 php mysql mysqli

我正在执行此脚本以将表单中的数据保存到远程数据库中,但由于某些奇怪的原因,它将其保存为空:

Empty data

脚本是:

#FORM SECTION
$choice;
$email;
$checkbox;
$success = FALSE;

#SQL SECTION
$host = '*******';
$user = '*******';
$pass = '*******';
$db = '********';

$connection = new mysqli($host, $user, $pass, $db);
$sql = "INSERT INTO clients_and_choices (email,choice) VALUES ('$email','$choice')";
$query = mysqli_query($connection, $sql);

if ($_SERVER["REQUEST_METHOD"] == "POST"){
    $email = $_POST['email'];
    $choice = $_POST['choice'];

        $email = $connection->real_escape_string($email);
        $choice = $connection->real_escape_string($choice);

    if (mysqli_connect_errno())
        trigger_error(mysqli_connect_errno());

    if (!filter_var($email, FILTER_VALIDATE_EMAIL) OR empty($choice)){
        http_response_code(400);
        echo "Houston we got a problem!";
        exit;
    }

    if ($query){
        $success = TRUE;
        http_response_code(200);
        echo 'Thank you :D';
    }
    else{
        http_response_code(500);
        echo "Bummer! It seems something went wrong :< If you would be so kind to try again :D";
    }

    mysqli_close($connection);

    if (isset($_GET["ajax"]))
        echo $success ? "success" : "error";
}

当我第一次使用 mysql 而不是 mysqli 编写它时,它起作用了……也许我做错了什么,但我真的说不出来,我也不知道不知道如何在 PHP 中进行调试。

最佳答案

正如我在评论中所说:

这个 $sql = "INSERT INTO clients_and_choices (email,choice) VALUES ('$email','$choice')"; 属于 /strong> 您验证了输入并确保它们不为空。还要确保您的表单确实使用了 post 方法,并且输入具有匹配的名称属性。

您可能也在同一个文件中使用 HTML 表单和 PHP/SQL,这将导致在页面加载后立即将空值插入数据库。

您还需要删除它们,因为没有必要使用它们:

$choice;
$email;
$checkbox;

然后检查您的输入是否为空。

一定要检查错误。


我确实注意到这里可以使用 Ajax if (isset($_GET["ajax"]))

如果您在其中设置有关要传递给数据库的数据的任何内容,那么这也会导致过早的数据输入。

关于php - 将空字符串保存到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35484719/

相关文章:

php - php语法错误混淆

php - 在 if 语句中测试 PDO 查询是否也会运行它?

PHP 不提交 mysql 查询

mysql - 使用 sails.js 检查数据库中已有的用户

php - 工作两年后突然出现 MYSQL "Malformed packet"on LOAD DATA LOCAL INFILE

PHP 比较变量每次都返回 false

php - 在 CSV 和 TXT 上验证标题

javascript - 带有 slug 值的动态下拉菜单和子菜单 php mysqli

php - 从另一个 php 文件调用未定义的函数

mysql - 在 MySQL 中,如何解决无法使用定义的字符串作为索引的问题?