PHP忽略if else语句

时间:2011-11-27 23:42:09

标签: php if-statement

我有一个if语句用于从地址检索lat和long并将其插入到sql数据库中。我有表格的基本结构,但希望包括空字段检查和pregmatch,但如果我尝试输入更多其他if语句没有任何反应。

// Your Google Maps API key
$key = "key";
// Desired address
$address = 'http://maps.google.com/maps/geo?q='.$location.'&output=json&oe=utf8&sensor=false&key=$key';
// Retrieve the URL contents
$data = file_get_contents($address);
// Parse the returned XML file
$jsondata = json_decode($data,true); 
if (is_array($jsondata )&& $jsondata ['Status']['code']==200){ 
  $lat = $jsondata ['Placemark'][0]['Point']['coordinates'][0]; 
  $lon = $jsondata ['Placemark'][0]['Point']['coordinates'][1];
}
elseif (mysql_query("INSERT INTO database (type, category, suggest, title, url, description, phone, fax, facebookpage, twitterpage, busemail, number, streetAddress, city, state, zip, country, name, email, latitude, longitude) 
VALUES ('$type', '$category', '$title', '$url', '$description', '$phone', '$fax', '$facebookpage', '$twitterpage', '$busemail', '$number', '$streetAddress', '$city', '$state', '$zip', '$country', '$name', '$email', '$lat', '$lon')");     {
die( header ("Location: http://www.exampleerrorpage.com" ) . mysql_error());
}
else { mail( $email, "Subject", $message, $headers );
header( "Location: http://www.examplecomplete.com/" );
}

提前感谢您的帮助。

编辑只有PHP的基本知识,我仍然是一个新手。要温柔。再次感谢。

编辑 - 表格的地址部分我并不总是在那里。因此,地理编码并不总是需要执行。

2 个答案:

答案 0 :(得分:1)

慢慢地再次审视你的逻辑并思考。你的节目说:

  

如果 JSON数据有效,请设置两个变量$lat$lon
  else(如果JSON数据无效但是)如果 SQL查询返回true die有错误,
  否则(如果以上都不是),发送电子邮件。

你只是搞砸了 if-then-else 逻辑。

逻辑上,你可能想要的东西是:

if (/* JSON data not valid */) {
    die('Error');
}

$lat = ...;
$lon = ...;

// Prevent SQL injection!
$lat = mysql_real_escape_string($lat);
$lon = mysql_real_escape_string($lon);

$query = "INSERT INTO ...";
if (!mysql_query($query)) {
    die(mysql_error());
}

if (!mail(...)) {
    die('Error sending mail');
}

答案 1 :(得分:0)

可能看起来很愚蠢,但要让自己看看查询是否总是落在if(你的if总是返回true)。

如果是,请检查您的if语句。如果你的语句总是返回true,我没有看到任何其他方式它不会进入else exept(类似于1 == 1)

如果您希望语句始终返回false,只需在语句中添加& 1!= 1即可。然后它应该总是进入其他部分。