3

HTML 代码:-

<form action="run.php" method="post">
Ambulance ID:<input type="text" name="amb_id">
Select the any of the point and submit:
<input type="radio" name="tposition" value="1">t1  (1 km away from the signal)
<input type="radio" name="tposition" value="2">t2 (before 500 mtrs point) 
<input type="radio" name="tposition" value="3">a3 (500 Mtr from signal)
<input type="radio" name="tposition" value="4">t3 (before signal, after 500 mtrs)
<input type="submit" value="Submit">
</form>

PHP代码: -

<?php
$ambid = $_POST['amb_id'];
//lattitude array
$lat=array(13.092593,13.092781,13.093126,13.09344,13.093889,13.094349,13.094882,13.095485,13.096575);

//longitude array
$lon=array(77.586415,77.585009,77.583454,77.58251,77.581598,77.580793,77.580096,77.57946,77.578486);

//connect to the db
$con = mysql_connect('localhost', 'root','');
mysql_select_db('traffic', $con);

//check the radio button
  if (isset($_POST['tposition'])) {
     switch($_POST['tposition']) {
    case 1:
        updateDb($lat[0],$lon[0]);
        break;
    case 2:
        updateDb($lat[1],$lon[1]);
        break;

        }
}

    else { echo "Please select any of the tpositon radio button"; }

function updateDb($lati,$longi)
{
$query = "UPDATE emergency SET e_latitude=$lati,e_longitude=$longi WHERE amb_id=$ambid ";
$res= mysql_query($query) or die("Unable to update the latlong values because : " . mysql_error());

}
mysql_close($con);

?>

运行上述脚本时,我收到错误消息“无法更新 latlong 值,因为:您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在 '' 行附近使用1" 。

但是,如果在每种情况下都使用相同的代码行而不是函数,则它可以工作。这是为什么 ?你能帮我提前谢谢。

4

2 回答 2

1

尝试这个

function updateDb($lati,$longi)
{
global $ambid;
$lati = mysql_real_escape_string($lati);
$longi = mysql_real_escape_string($longi);
$ambid = mysql_real_escape_string($ambid);
$query = "UPDATE emergency SET `e_latitude`='$lati',`e_longitude`='$longi' WHERE `amb_id`='$ambid' ";
$res= mysql_query($query) or die("Unable to update the latlong values because : " . mysql_error());

}
于 2013-03-24T12:51:34.613 回答
0

可能会发生此错误,因为您在插入'字符时没有使用mysql_real_escape_string()插入到 MySQL 查询中的值。我建议,你像这样封装你的价值观

$ambid = mysql_real_escape_string($_POST['amb_id']); 

但是,我根本不建议你使用 mysql_ 函数,因为它对 mysql 注入非常弱且易受攻击,就像你的代码一样。改为学习 PDO。

于 2013-03-24T12:46:48.503 回答