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);
}

这是它给我的错误:

更新 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 子句说“WHERE gis_id =”。

那么如何使用 mysql_real_escape_string 转义它:

WHERE gis_id = ".mysql_real_escape_string($gisid);

并使用 var_dump($gisid) 确保设置正确。

于 2012-10-19T16:45:52.170 回答