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"
     <select class=" am-input-sm">
<option value="">添加了 .am-input-sm</option>
</select>

2、a标签如何带额外参数(或者改变原a标签的参数)?

动态改变href属性即可

$("#n").click(function(){
$(this).attr("href","a.jsp?name="+name+"&id="+id+"&age="+age);
}

样例:选择框变化后,改变a标签的type参数的值

 <script>
$(function () {
$('#battleground_diff').change(function () {
$('a.battleground_item_a').each(function () {
let perHref=$(this).attr("href");
let reg=/\/type\/\d+/gi;
let needStr='/type/'+$('#battleground_diff').val();
let ansHref=perHref.replace(reg,needStr);
$(this).attr("href",ansHref);
//console.log(perHref);
//console.log(ansHref);
});
});
});
</script>

3、php如何从数组中任意取一个元素?

array_rand — 从数组中随机取出一个或多个单元

mixed array_rand ( array $array [, int $num = 1 ] )

从数组中取出一个或多个随机的单元,并返回随机条目的一个或多个键。 它使用了伪随机数产生算法,所以不适合密码学场景,

 <?php
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($input, 2);
echo $input[$rand_keys[0]] . "\n";
echo $input[$rand_keys[1]] . "\n";
?>

4、js如何向一个数组中添加元素?

  • 数组的创建
  1. var arrayObj = new Array(); //创建一个数组
  2. var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度
  3. var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值

要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。

  • 数组元素的添加
  1. arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度

5、thinkphp中如何清空数据表?

Db::query("truncate lg_goods");
 //清空物品
public function truncateGoods(){
$ans=Db::query("truncate lg_goods");
if($ans!==false){
$this->success('清空物品成功!!',url('goods/index'));
}else{
$this->error('清空物品失败!!');
}
}

6、战斗页面有必要在战斗开始之前就把战斗胜利获得的物品数据传递过来么?

没有必要

正确的逻辑应该是这样:

战斗胜利,调用ajax(后台给用户发放奖励),ajax的回调函数里面传回来数据(给用户发放的奖励数据),在回调函数里面调用弹出层(显示奖励结果),

而不是在弹出层里面调用回调函数,

7、相关推荐功能(真的是帅)?

jquery的ajax的load方法,可以加载页面,也可以加载页面的局部

而且直接是ajax操作

完美

 <!--获取相关推荐-->
<div>
<h1>相关推荐</h1>
<div id="fry_recommend" style="padding-bottom: 40px;"> </div>
</div> <script>
$(function () {
function addRecommend(){
setTimeout(function () {
$('#EntryTag>a').each(function () {
var needUrl=$(this).attr('href');
console.log(needUrl);
$("#fry_recommend").load(needUrl+" #myposts");
});
},5000);
}
addRecommend();
});
</script>

8、js中setInterval的第一个参数是函数还是函数代码段?

是代码段,而不是函数,函数就达不到效果了

setInterval(addRecommend,1000);
 <!--获取相关推荐-->
<script>
$(function () {
function addRecommend(){
$('#EntryTag>a').each(function () {
var needUrl=$(this).attr('href');
console.log(needUrl);
$("#fry_recommend").load(needUrl+" #myposts");
if(needUrl) clearInterval(fry_t);
});
}
var fry_t=setInterval(addRecommend,1000);
});
</script>

9、如何清除setInterval?

clearInterval方法,里面的参数是setInterval的返回值

var fry_t=setInterval(addRecommend,1000);
if(needUrl) clearInterval(fry_t);

10、php中的strpos和stripos的区别是什么?

都是查找字符串首次出现的位置,

只不过stripos() 不区分大小写。

二、内容在总结中

 

legend---十、thinkphp中如何进行原生sql操作的更多相关文章

  1. [转]ThinkPHP中如何使用原生SQL

    From : http://huangqiqing123.iteye.com/blog/1540323 TP的模型可以支持原生SQL操作,提供了query和execute两个方法,为什么原生SQL还要 ...

  2. thinkphp中常用到的sql操作

    1.清空某表数据: $sql = 'truncate table table_name'; Db::execute($sql );

  3. Golang原生sql操作Mysql数据库增删改查

    Golang要操作mysql数据库,首先需要在当期系统配置GOPATH,因为需要使用go get命令把驱动包下载到GOPATH下使用. 首先配置好你的GOPATH,执行以下命令,下载安装mysql驱动 ...

  4. thinkPHP框架中执行原生SQL语句的方法

    这篇文章主要介绍了thinkPHP框架中执行原生SQL语句的方法,结合实例形式分析了thinkPHP中执行原生SQL语句的相关操作技巧,并简单分析了query与execute方法的使用区别,需要的朋友 ...

  5. THINKphp中复杂的查询

    字符串拼接查询 案例一:拼接字符串(多条件查询) $where = ''; //定义字符串,用于拼接满足条件的数据字段 $value = []; // 定义空数组,用于接收值 if(!empty($n ...

  6. thinkphp中的内置操作数据库与mysql中的函数汇总

    8.4.4 Model类getModelName() 获取当前Model的名称getTableName() 获取当前Model的数据表名称switchModel(type,vars=array()) ...

  7. Django之ORM执行原生sql语句

    django中的ORM提供的操作功能有限,在模型提供的查询API不能满足实际工作需要时,可以在ORM中直接执行原生sql语句. Django 提供两种方法使用原生SQL进行查询:一种是使用raw()方 ...

  8. Django框架08 /聚合查询、分组、F/Q查询、原生sql相关

    Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 目录 Django框架08 /聚合查询.分组.F/Q查询.原生sql相关 1. 聚合查询 2. 分组 3. F查询和Q查询 4. o ...

  9. Mybatis中的update动态SQL语句

    Mybatis中的CRUD操作(增删改查)中,简单的SQL操作比较直观,如查找操作: <select id="findBySrcId" resultMap="ent ...

随机推荐

  1. LinkedList 方法知识点

    package test_day_9; import java.util.Iterator; import java.util.LinkedList; public class LinkedListD ...

  2. TLS握手

    http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html 1994年,NetScape公司设计了SSL协议(Secure Sockets Layer)的1 ...

  3. lightoj--1294--Positive Negative Sign(水题,规律)

    Positive Negative Sign Time Limit: 2000MS   Memory Limit: 32768KB   64bit IO Format: %lld & %llu ...

  4. Centos7 minimal 系列之Redis集群搭建(六)

    一.redis安装 借鉴上篇博客:http://www.cnblogs.com/WJ--NET/p/8176071.html 二.集群搭建 2.1.创建文件夹 mkdir redis_cluster ...

  5. Android设计模式——Builder(建造者)模式

    1.建造者模式是一步一步创建一个复杂对象的创建模式.该模式是为了将构建复杂对象的过程和他的部件解耦,使得构建过程和部件表示隔离开. 2.Bulider模式的定义是:将一个复杂对象的构建与它的表示分离, ...

  6. python学习——正则表达式

    正则表达式                        正则表达式的主要作用就是对字符串进行匹配,通过匹配,进行筛选,选择出符合规则的字符串.其实正则表达式的作用就像是一个过滤器一样.你输入好自己的 ...

  7. Oracle学习笔记——常用函数总结

    在平时写PL/SQL的时候,经常要用到很多系统自带的函数,而这些函数用起来非常好用,但是每次用完以后,就又忘到脑后了,为了加深自己的映象,以及对这些函数做一个全面的总结,就有了今天这篇文章. 首先这就 ...

  8. There are multiple modules with names that only differ in casing.

    client?4c0e:153 ./src/components/Paginate.vue There are multiple modules with names that only differ ...

  9. BZOJ 4990 [USACO17FEB] Why Did the Cow Cross the Road II P (树状数组优化DP)

    题目大意:给你两个序列,你可以两个序列的点之间连边 要求:1.只能在点权差值不大于4的点之间连边 2.边和边不能相交 3.每个点只能连一次 设表示第一个序列进行到 i,第二个序列进行到 j,最多连的边 ...

  10. BeanUtils(前端赋值给后台,忽略空属性)

    package com.drn.core.util; import java.beans.PropertyDescriptor; import java.lang.reflect.Method; im ...