如何通过表单将数据插入db并将某些表单字段留空?

时间:2013-08-21 12:54:59

标签: php mysql insert-into

我想让用户只插入他们想要插入表格的信息,以及一些表格字段保持为空(如果用户不需要填写它)。但是当我尝试以下列方式在db表“catalog”中仅插入一些数据时:

if (!empty($_POST['name'])){ $name = $_POST['name'];}
if (!empty($_POST['city'])){ $city = $_POST['city'];}
if (!empty($_POST['country'])){ $country= $_POST['country'];}
if (!empty($_POST['year'])){ $year = $_POST['year'];}

$sql = "INSERT INTO catalog(name,city,country,year)VALUES('$name','$city','$country','$year')";
mysql_query($sql);

它返回错误:undefined variable.当然,它是同一个变量,它从我提供空的html表单字段中的内容中获取它的值。

例如,如果我几乎完成用于在db中插入数据的html表单,并且只将“city”字段留空,则脚本返回错误,让我知道我的$ city变量未定义。换句话说,如何使字段空白成功插入数据?

谢谢!

3 个答案:

答案 0 :(得分:0)

删除所有if语句,因此即使用户未在该字段中输入任何信息,即使变量不包含任何数据,也要定义变量。因此,如果用户未输入city,则该记录仍会插入catalog表中,但city

的值为空

if (!empty($_POST['name'])){ $name = $_POST['name'];}
if (!empty($_POST['city'])){ $city = $_POST['city'];}
if (!empty($_POST['country'])){ $country= $_POST['country'];}
if (!empty($_POST['year'])){ $year = $_POST['year'];}

$name = $_POST['name'];
$city = $_POST['city'];
$country= $_POST['country'];
$year = $_POST['year'];

答案 1 :(得分:0)

改为插入NULL

将您的代码更改为:

$name = !empty($_POST['name']) ? $_POST['name'] : NULL;
$city = !empty($_POST['city']) ? $_POST['city'] : NULL;
$country = !empty($_POST['country']) ? $_POST['country'] : NULL;
$year = !empty($_POST['year']) ? $_POST['year'] : NULL;

这样,即使用户没有输入字段的任何值,它也将为NULL并将作为NULL插入到您的数据库中。这将删除Undefined variable通知。

答案 2 :(得分:0)

试试这个:

$name = (isset($_POST['name']) && !empty($_POST['name'])) ? $_POST['name'] : '';
$city = (isset($_POST['city']) && !empty($_POST['city'])) ? $_POST['city'] : '';
$country = (isset($_POST['country']) && !empty($_POST['country'])) ? $_POST['country'] : '';
$year = (isset($_POST['year']) && !empty($_POST['year'])) ? $_POST['year'] : '';