legend---十、thinkphp中如何进行原生sql操作
一、总结
一句话总结:query
方法和execute
方法
Db
类支持原生SQL
查询操作,主要包括下面两个方法:
query
方法
query
方法用于执行SQL
查询操作,如果数据非法或者查询错误则返回false,否则返回查询结果数据集(同select
方法)。
使用示例:
Db::query("select * from think_user where status=1");
如果你当前采用了分布式数据库,并且设置了读写分离的话,query方法始终是在读服务器执行,因此query方法对应的都是读操作,而不管你的SQL语句是什么。
execute
方法
execute用于更新和写入数据的sql操作,如果数据非法或者查询错误则返回false ,否则返回影响的记录数。
使用示例:
Db::execute("update think_user set name='thinkphp' where status=1");
如果你当前采用了分布式数据库,并且设置了读写分离的话,execute方法始终是在写服务器执行,因此execute方法对应的都是写操作,而不管你的SQL语句是什么。
参数绑定
支持在原生查询的时候使用参数绑定,包括问号占位符或者命名占位符,例如:
Db::query("select * from think_user where id=? AND status=?",[8,1]);
// 命名绑定
Db::execute("update think_user set name=:name where status=:status",['name'=>'thinkphp','status'=>1]);
1、amazeui如何控制控件框的大小?
class=" am-input-sm"
1 <select class=" am-input-sm"> 2 <option value="">添加了 .am-input-sm</option> 3 </select>
2、a标签如何带额外参数(或者改变原a标签的参数)?
动态改变href属性即可
$("#n").click(function(){ $(this).attr("href","a.jsp?name="+name+"&id="+id+"&age="+age); }
样例:选择框变化后,改变a标签的type参数的值
1 <script> 2 $(function () { 3 $('#battleground_diff').change(function () { 4 $('a.battleground_item_a').each(function () { 5 let perHref=$(this).attr("href"); 6 let reg=//type/d+/gi; 7 let needStr='/type/'+$('#battleground_diff').val(); 8 let ansHref=perHref.replace(reg,needStr); 9 $(this).attr("href",ansHref); 10 //console.log(perHref); 11 //console.log(ansHref); 12 }); 13 }); 14 }); 15 </script>
3、php如何从数组中任意取一个元素?
array_rand — 从数组中随机取出一个或多个单元
mixed array_rand ( array $array
[, int $num
= 1 ] )
从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个键。 它使用了伪随机数产生算法,所以不适合密码学场景,
1 <?php 2 $input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank"); 3 $rand_keys = array_rand($input, 2); 4 echo $input[$rand_keys[0]] . " "; 5 echo $input[$rand_keys[1]] . " "; 6 ?>
4、js如何向一个数组中添加元素?
- 数组的创建
- var arrayObj = new Array(); //创建一个数组
- var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度
- var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值
要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。
- 数组元素的添加
- arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度
5、thinkphp中如何清空数据表?
Db::query("truncate lg_goods");
1 //清空物品 2 public function truncateGoods(){ 3 $ans=Db::query("truncate lg_goods"); 4 if($ans!==false){ 5 $this->success('清空物品成功!!',url('goods/index')); 6 }else{ 7 $this->error('清空物品失败!!'); 8 } 9 }
6、战斗页面有必要在战斗开始之前就把战斗胜利获得的物品数据传递过来么?
没有必要
正确的逻辑应该是这样:
战斗胜利,调用ajax(后台给用户发放奖励),ajax的回调函数里面传回来数据(给用户发放的奖励数据),在回调函数里面调用弹出层(显示奖励结果),
而不是在弹出层里面调用回调函数,
7、相关推荐功能(真的是帅)?
jquery的ajax的load方法,可以加载页面,也可以加载页面的局部
而且直接是ajax操作
完美
1 <!--获取相关推荐--> 2 <div> 3 <h1>相关推荐</h1> 4 <div id="fry_recommend" style="padding-bottom: 40px;"> 5 6 </div> 7 </div> 8 9 <script> 10 $(function () { 11 function addRecommend(){ 12 setTimeout(function () { 13 $('#EntryTag>a').each(function () { 14 var needUrl=$(this).attr('href'); 15 console.log(needUrl); 16 $("#fry_recommend").load(needUrl+" #myposts"); 17 }); 18 },5000); 19 } 20 addRecommend(); 21 }); 22 </script>
8、js中setInterval的第一个参数是函数还是函数代码段?
是代码段,而不是函数,函数就达不到效果了
setInterval(addRecommend,1000);
1 <!--获取相关推荐--> 2 <script> 3 $(function () { 4 function addRecommend(){ 5 $('#EntryTag>a').each(function () { 6 var needUrl=$(this).attr('href'); 7 console.log(needUrl); 8 $("#fry_recommend").load(needUrl+" #myposts"); 9 if(needUrl) clearInterval(fry_t); 10 }); 11 } 12 var fry_t=setInterval(addRecommend,1000); 13 }); 14 </script>
9、如何清除setInterval?
clearInterval方法,里面的参数是setInterval的返回值
var fry_t=setInterval(addRecommend,1000);
if(needUrl) clearInterval(fry_t);
10、php中的strpos和stripos的区别是什么?
都是查找字符串首次出现的位置,
只不过stripos() 不区分大小写。