PHP为什么!空无效?

Mik*_*ike 0 php mysql

!空代码在此代码中:

if (!empty($p1_firstname))
mysql_query ("INSERT INTO cases VALUES ('','$case','$date_booked','$p1_firstname','$p1_lastname','$city')");

if (!empty($p2_firstname)) 
$register_case = mysql_query ("INSERT INTO cases VALUES ('','$case','$date_booked','$p2_firstname','$p2_lastname','$city')");
Run Code Online (Sandbox Code Playgroud)

但不是这个代码:

if (!empty($p1_firstname))
$passenger1 = 1;
mysql_query ("INSERT INTO cases VALUES ('','$case','$passenger1','$date_booked','$p1_firstname','$p1_lastname','$city')");

if (!empty($p2_firstname)) 
$passenger2 = 2;
$register_case = mysql_query ("INSERT INTO cases VALUES ('','$case','$passenger2','$date_booked','$p2_firstname','$p2_lastname','$city')");
Run Code Online (Sandbox Code Playgroud)

即使字段为空,它仍然会执行查询.可以做些什么来解决这个问题?

Bol*_*ock 8

因为你缺少花括号

if (!empty($p1_firstname)) {
    $passenger1 = 1;
    mysql_query ("INSERT INTO cases VALUES ('','$case','$passenger1','$date_booked','$p1_firstname','$p1_lastname','$city')");
}

if (!empty($p2_firstname)) {
    $passenger2 = 2;
    $register_case = mysql_query ("INSERT INTO cases VALUES ('','$case','$passenger2','$date_booked','$p2_firstname','$p2_lastname','$city')");
}
Run Code Online (Sandbox Code Playgroud)

缺少大括号仅仅意味着声明立即以下的if小号得到执行,如果他们的条件得到满足.该mysql_query()电话是不是一部分if块可言的,无论你的变量是否会执行empty()与否.

通过省略大括号不是正确地缩进代码,这种错误变得更难以发现.并非你不能这样做,但它更安全,并且浪费更少的时间,采用良好压痕的习惯并使用花括号来清楚地指示控制流量块.