今天,在工作中,发现一个问题,简要描述:用perl写的cgi程序获取表单元素的值,用获得的值拼接sql语句,假如有个表单元素这样写
<input type=hidden name=type_id value=$type_id>,其中$type_id 由perl写成的同一个cgi程序执行时写入。
另设一个表单元素,供用户输入值使用:<input type=text name=pro>,
在cgi中获得表单元素的值:
my $type_id = $cgi->param("type_id");
my $pro = $cgi->param("pro");
拼接sql语句时:$sql = "insert into t_t set type=$type_id,prod='$pro'";
假如$type_id=3,$pro=SMS
然后输出这个sql,发现sql=insert into t_t set type=3就断掉了,后面的部分就没了。
试了多次,思索半天后将<input type=hidden name=type_id value=$type_id>改写为:<input type=hidden name=type_id value="$type_id">
这样拼接出的sql语句就正常了:sql=sql=insert into t_t set type=3,prod='SMS'
不知道这是否和html的写法标准有关。