将日期或电话号码或不同的字符保存到mySQL数据库

Kev*_*90M 2 html mysql

我有一个带有几个输入框的表单

<input type='text' name='Last' placeholder='Last Name'/>
<input type='text' name='dob' placeholder='Birth Date'/>
<input type='text' name='height' placeholder='Height'/>
Run Code Online (Sandbox Code Playgroud)

但是如果我在输入框中写入类似4/8/87的日期,它就不会保存到数据库中.同样的情况,如果我写高度为5'7"或电话号码为702-412-4453如果我写那样的.没有什么会保存.我必须写它们所有通用的像4887或57或7024124453

有人可以解释原因或给我一个解决方法吗?

VMc*_*tor 6

在插入数据库之前,您需要过滤并清理输入.

如果您不使用PHP,请使用mysqli_real_escape_string或您的语言提供的任何类似功能:

<?php
$con=mysqli_connect("localhost","my_user","my_password","my_db");

// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

// escape variables for security
$firstname = mysqli_real_escape_string($con, $_POST['firstname']);
$lastname = mysqli_real_escape_string($con, $_POST['lastname']);
$age = mysqli_real_escape_string($con, $_POST['age']);

$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES ('$firstname', '$lastname', '$age')";

if (!mysqli_query($con,$sql)) {
  die('Error: ' . mysqli_error($con));
}
echo "1 record added";

mysqli_close($con);
?>
Run Code Online (Sandbox Code Playgroud)

这是来自w3school:http://www.w3schools.com/php/func_mysqli_real_escape_string.asp

这将确保插入查询的安全性,并将变量值读取为仅要插入的值,而不是查询语法的一部分.

例如,您插入5'7:

查询将是:

没有逃生:

 $sql="INSERT INTO Persons (FirstName, LastName, Age)
    VALUES ('$firstname', '$lastname', '5'7')";
Run Code Online (Sandbox Code Playgroud)

查看5'7废墟查询,所以你需要逃避它:

  $sql="INSERT INTO Persons (FirstName, LastName, Age)
        VALUES ('$firstname', '$lastname', '".mysqli_real_escape_string("5'7")."')";
Run Code Online (Sandbox Code Playgroud)

现在5'7不会破坏查询,因为它只能作为要插入的值读取.