如何在ThingEngineer中使用rawQuery返回限定行数(如5行)?
在ThingEngineer中用rawQuery返回限定行数的方法
你遇到的问题是rawQuery方法和get方法的参数逻辑不同:get的第二个参数可以直接指定返回行数,但rawQuery的第二个参数是用于参数绑定的,不是用来限制行数的,所以直接传数字无效。
解决方法如下,推荐使用更安全的参数绑定方式:
方法1:在SQL语句中添加LIMIT子句(配合参数绑定,推荐)
直接在原生SQL里用LIMIT指定要返回的行数,同时用参数绑定避免SQL注入风险:
$users = $this->db->rawQuery( "SELECT * FROM `tbl_emp_information` WHERE first_name = ? OR last_name = ? OR middle_name = ? LIMIT 5", [$name, $name, $name] );
这里LIMIT 5表示只返回5条匹配结果,?是占位符,第二个数组参数会依次替换这些占位符,既实现了行数限制,又避免了直接拼接变量带来的SQL注入问题。
方法2:直接在SQL中拼接LIMIT(不推荐,有注入风险)
如果暂时忽略注入风险,也可以直接在SQL语句末尾拼接LIMIT:
$users = $this->db->rawQuery( "SELECT * FROM `tbl_emp_information` WHERE first_name = '$name' OR last_name = '$name' OR middle_name = '$name' LIMIT 5" );
但这种方式存在SQL注入隐患,不建议在生产环境使用。
内容的提问来源于stack exchange,提问作者Michael Angelo Corral
相关产品推荐
相关产品推荐

