2011-01-19 62 views
0

在此代码空作品:PHP为什么!空不工作? !

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')"); 

但不是这样的代码:

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')"); 

它仍然是即使该字段为空查询。可以做些什么来解决这个问题?

+1

PS。你应该使用PDO(http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/),因为如果你不逃避你的查询,你的网站将容易受到SQL注入! PDO已经准备好了保护你的声明! – Alfred 2011-01-19 05:57:54

回答

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')"); 
} 

缺少的大括号仅仅意味着声明立即以下,如果他们的条件得到满足的if小号得到执行。 mysql_query()调用根本不是if块的一部分,并且无论您的变量是否为empty()都将执行。

通过省略大括号没有正确缩进你的代码,这种错误变得更难以发现。并不是说你不能那样做,但是它更安全,并且浪费更少的时间,采用良好的缩进习惯并使用大括号来清楚地指示控制流程块。附件1:

+0

谢谢,解决了这个问题 – Mike 2011-01-19 05:53:01