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クエリに挿入する値を'使用せずに文字を挿入しているために発生する可能性があります。mysql_real_escape_string()私は提案します、あなたはこのようにあなたの価値観をカプセル化します

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

ただし、mysql_関数は非常に弱く、コードと同じようにmysqlインジェクションに対して脆弱であるため、mysql_関数を使用することはお勧めしません。代わりにPDOを学びましょう。

于 2013-03-24T12:46:48.503 に答える