我正在执行此脚本以将表单中的数据保存到远程数据库中,但由于某些奇怪的原因,它将其保存为空:
脚本是:
#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/