🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
BE 数据库类提供了 quoteKey, quoteValue, escape 三个方法处理拼接到 sql 中的数据,在需要拼接 SQL 的操作中,我们都应该使用这些处理方法处理数据,以防止SQL注入。 ### 键名处理 *** ~~~ $sql = 'SELECT * FROM ' . $db->quoteKey('user'); // 相当于执行 SQL // SELECT * FROM `user` $sql = 'SELECT * FROM ' . $db->quoteKey('user') . ' WHERE ' . $db->quoteKey('age') . ' < 20' ; // 相当于执行 SQL // SELECT * FROM `user` WHERE `age` < 20 ~~~ ### 写入的值处理 *** ~~~ $name = "abc'abc"; $sql = 'SELECT * FROM ' . $db->quoteKey('user') . ' WHERE ' . $db->quoteKey('name') . ' = ' .$db->quoteValue( $name ) ; // 对等SQL(MySQL): SELECT * FROM `user` WHERE `name` = 'abc\'abc' // 对等SQL(Oracle): SELECT * FROM "user" WHERE "name" = 'abc\'\'abc' ~~~ ### 写入的值处理 (不带外层引号) *** ~~~ $name = "abc'abc"; $sql = 'SELECT * FROM ' . $db->quoteKey('user') . ' WHERE ' . $db->quoteKey('name') . ' = \'' .$db->escape($name) . ' \'' ; // 对等SQL(MySQL): SELECT * FROM `user` WHERE `name` = 'abc\'abc' // 对等SQL(Oracle): SELECT * FROM "user" WHERE "name" = 'abc\'\'abc' ~~~