从url获取参数

时间:2014-05-20 18:54:45

标签: php html sql

我试图创建一个从url获取参数并将其插入数据库的php函数 我试着通过输入" http://acstracking.com/dat.php?lat=0&lng=0"来检查它。在网址中但是没有插入会发生什么问题呢?

<?php

$Lat = $_GET['lat'];        //Get Latitude Data
$Long = $_GET['lng'];       // Get Longitude Data
$type = "restaurant";          //marker type
$name = "A.C.S";                //Name
$add= "Bahrain";

$dbName = "uobtrack_acstracking"; //Database name

$db = mysql_connect ("localhost","username", "password") or die("Unable To Connect "); //Connect to database

$test= mysql_select_db ($dbName,$db) or die("Unable to select database"); //Test Connection

$query = "INSERT INTO `uobtrack_acstracking`.`markers` (`name`, `address`, `lat`, `long`, `type`) VALUES ('$name', '$add', '$Lat', '$Long', '$type');"; //Insert Query

$Alpha  = @mysql_query($query,$db); //Execute Query

if($Alpha)  
echo "<br> insertion succeeded...";
else
echo "<br> insertion failed...";

mysql_close($db); //Close Connection
}
?>

1 个答案:

答案 0 :(得分:0)

我发现在你的语句中使用变量时,MySql非常错误(也容易出现SQL注入)。我建议使用PDO。它很容易学习,并允许您使用预准备语句。您可以调整以下示例以满足您的需求:

$opt = array(
  PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  // other options 
);

$dbh = new PDO('mysql:host=localhost;dbname=yourDatabse;charset=utf8', 'yourUsername', 'yourPassword', $opt);

$opt用于错误报告

try {
  $sql= "INSERT INTO `table`(`column1`, `column2`) VALUES(:exampleX, :trialX)"; 
  $stmt = $dbh->prepare($sql);
  $stmt->bindParam(':exampleX', $example, PDO::PARAM_STR);
  $stmt->bindParam(':trialX', $trial, PDO::PARAM_STR);
  $stmt->execute();

} catch(PDOException $ex) {
  echo "An Error occured!"; //user friendly message
  echo ($ex->getMessage());
}

try {...} catch {...}充当显示错误的方法。当您看到:something时,这是一个允许您在语句中包含变量的参数。不在参数($stmt->bindParam(':trialX', $trial, PDO::PARAM_STR);而不是$stmt->bindParam(':trial', $trial, PDO::PARAM_STR);中使用变量名称的原因是当我问了类似的问题时,告诉我不要使用变量名作为参数名称。

这可能看起来很复杂(仍然适合我),但我希望它能回答你的问题。