0

PHP でテーブルを更新しようとしていますが、構文エラーが発生し続けます。

これが私が持っているものです:

if (isset($_POST['inspect'])) {
    // get gis_id from pole table to update fm_poles
    $sql = "select gis_id from poles where pole_number = '".$_GET['polenumber']."'";
    $rs = pg_query($sql) or die('Query failed: ' . pg_last_error());
    $gisid = $row['gis_id'];
    pg_free_result($rs);

    // update fm_poles
    $sql = "update fm_poles set inspect ='".$_POST['inspect']."',co_date = '".$_POST['co_date']."',size = '".$_POST['size']."',date = ".$_POST['date'].",brand ='".$_POST['brand']."',backspan = ".$_POST['backspan']." WHERE gis_id = ".$gisid."";
    print $sql."<BR>\n";
    $rs = pg_query($sql) or die('Query failed: ' . pg_last_error());
    pg_free_result($rs);
}

これは私に与えるエラーです:

update fm_poles set inspect ='20120208',co_date = '20030710',size = '30-5',date = 0,brand ='test',backspan = 300 WHERE gis_id =

エラーメッセージ:

クエリが失敗しました: エラー: 文字 129 の入力の末尾に構文エラーがあります

4

2 に答える 2

1

A. 入力 (POST のデータ) を確認してください。不正な文字が含まれている可能性がありますか?

例: $_POST['backspan'] = "パレードに行きましょう。";

..SQL カプセル化で問題が発生します。

[編集] nvm、SQLクエリからの出力を追加したようですが、カプセル化の問題はありません...

B. 以下のコードを参照してください。将来、連結の入力時間を節約できる可能性があります。:-)

$sql = "update fm_poles set inspect = '{$_POST['inspect']}',
co_date = '{$_POST['co_date']}',size = '{$_POST['size']}',
date = '{$_POST['date']}',brand = '{$_POST['brand']}',
backspan = '{$_POST['backspan']}' WHERE gis_id = '{$gisid}';";
print $sql."<BR>\n";

C. 上記のコードを挿入するか、WHERE gis_is = $gsid を単一引用符で囲んでみてください: WHERE gis_id = '$gsid'.

于 2012-10-19T16:52:09.610 に答える
0

$ gisidに値がないように見えるか、奇妙な文字が含まれている可能性があるため、where句は「WHEREgis_id=」と言っています。

では、mysql_real_escape_stringでエスケープするのはどうですか?

WHERE gis_id = ".mysql_real_escape_string($gisid);

そして、var_dump($ gisid)を使用して、正しく設定されていることを確認します。

于 2012-10-19T16:45:52.170 に答える