我试图创建一个从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
}
?>
答案 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);
中使用变量名称的原因是当我问了类似的问题时,告诉我不要使用变量名作为参数名称。
这可能看起来很复杂(仍然适合我),但我希望它能回答你的问题。