我有一个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的基本知识,我仍然是一个新手。要温柔。再次感谢。
编辑 - 表格的地址部分我并不总是在那里。因此,地理编码并不总是需要执行。
答案 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即可。然后它应该总是进入其他部分。