我想让用户只插入他们想要插入表格的信息,以及一些表格字段保持为空(如果用户不需要填写它)。但是当我尝试以下列方式在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变量未定义。换句话说,如何使字段空白成功插入数据?
谢谢!
答案 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'] : '';