0

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

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 变量未定义。换句话说,如何使字段为空对于成功插入数据是不必要的?

谢谢!

4

3 回答 3

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'];
于 2013-08-21T12:58:19.280 回答
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通知。

于 2013-08-21T13:00:40.820 回答
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'] : '';
于 2013-08-21T13:08:48.633 回答