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

时间:2015-08-07 01:05:39

标签: 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'/>

但是如果我在输入框中写入类似4/8/87的日期,它就不会保存到数据库中。如果我写高度为5&#39; 7&#34;或电话号码为702-412-4453如果我写那样的话。什么都不会保存。我必须把它们全部写成通用的,如4887或57或7024124453

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

2 个答案:

答案 0 :(得分: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);
?>

来自w3school的那些:http://www.w3schools.com/php/func_mysqli_real_escape_string.asp

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

例如,您插入5&#39; 7:

查询将是:

没有退出:

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

请参阅5&#7; 7查询查询,因此您需要将其转义:

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

现在5&#39; 7不会破坏查询,因为它只会被读取为要插入的值。

答案 1 :(得分:0)

保存这样的数据时,我建议您使用数据类型VARCHAR。这将允许您保存您指定的数据。

确保有一个主键将它们全部链接在一起。 This是一个很好的视频教程系列,如果你需要学习基础知识