如何在HTML文本框自动添加单引号以规避ORA-00904错误?
解决HTML文本框自动为输入内容添加单引号的问题
你遇到的ORA-00904错误,根源是Oracle把不带单引号的M10500000003当成了列名之类的标识符,而非字符串常量。要解决这个问题,只需要在拼接SQL时,自动给用户输入的会员号前后加上单引号即可,无需手动输入。
修改后的代码
直接调整<a>标签的onclick逻辑,在输入值前后拼接单引号:
<label for="txtName">Member Number</label><br> <input type="text" id="txtName"> <a href="javascript:;" onclick="this.href='http://myIP/apex/epos.db_sql?P_SQL=select memberno,nameoncard from c19u.psm_member@c19 where memberno=' + "'" + document.getElementById('txtName').value + "'"">Check</a>
如果觉得引号嵌套太混乱,也可以用ES6模板字符串让代码更清晰:
<label for="txtName">Member Number</label><br> <input type="text" id="txtName"> <a href="javascript:;" onclick=" const memberNo = document.getElementById('txtName').value; this.href = `http://myIP/apex/epos.db_sql?P_SQL=select memberno,nameoncard from c19u.psm_member@c19 where memberno='${memberNo}'`; ">Check</a>
关键说明
- 之前用HTML字符实体
'无效,是因为实体只在HTML解析时生效,JavaScript字符串里不会把它解析成单引号,直接在JS代码里用单引号(或模板字符串)才是正确的做法。 - 注意:这种前端直接拼接用户输入到SQL的方式存在SQL注入风险,如果是对外公开的系统,一定要让后端改用参数化查询处理,避免安全问题。
内容的提问来源于stack exchange,提问作者Daniel Hoong
相关产品推荐
相关产品推荐

