PHP为什么!空不工作? !
问题描述:
在此代码空作品: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')");
它仍然是即使该字段为空查询。可以做些什么来解决这个问题?
答
因为你缺少大括号
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
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