学习时间 为了模拟实际编程情况,我们使用以下代码。比如有一个CRM系统,需要用户输入上报公司信息之后,通过API接口返回提示信息。 ?...代码比较简单,知识将 request 的 input 内容复制给 Company 模型的属性,然后调用 save 方法将数据存入。 那么,如果想要获取存入后数据条目的ID,如何返回呢?...' => $data->id), 200); 上面的写法自然是对的,返回的是当前写入的条目的ID。...但是,如果是并发的系统,或者在流程处理中,没有使用 Company 模型进行数据操作,而是 DB::statement,DB::insert 这些,获取到的,可就不是最后的ID了。...兼容的写法,需要考虑多用户并发操作,以及数据更新源不同的情况。那么需要使用独立的方式: DB::getPdo()->lastInsertId(); 这样就可以了,基本上不会出错。
呃,那我们接下来来说说预处理语句的好处,或者说为什么要使用预处理语句进行数据库交互,好处有二: 首先,使用预处理语句提前定义的 SQL 模板只会解析一次,但可以通过传递不同的参数值执行多次,从而避免模板相同的...综上,从性能和安全角度考虑,推荐使用预处理语句处理数据库的增删改查操作。...对于插入操作,可以通过 PDO 对象上的 lastInsertId 方法返回插入记录的主键 ID,对于更新和删除方法,可以通过 PDOStatement 对象上的 rowCount 方法返回受影响行数表示是否操作成功...->update($id); echo '受影响的行数: ' ....3、数据库事务 最后,我们再来看看如何通过 PDO 扩展实现数据库事务的提交和回滚,我们已经知道,对于单条 SQL 语句而言,事务提交和回滚是自动完成的,对于 SQL 语句序列(多条 SQL 语句),则需要显式开启事务和提交事务
$pdo=new PDO($dsn,$username,$password); var_dump($pdo); exec() 执行一条 SQL 语句,并返回其受影响的行数。...EOF; $res=$pdo->exec($query); // 最后插入记录的 ID 号 $pdo->lastInsertId(); var_dump($res); // 获取错误信息 $...pdo->errorCode(); $pdo->errorInfo(); query() 查询,执行一条 SQL 语句,返回一个 PDOStatement 对象 查询 插入 $sql='...select * from tablename'; $stmt=$pdo->query($sql); // 之后通过遍历数组,获取结果 prepare() execute() prepare() 准备要执行的...insert update delete 操作,返回受影响的记录的条数 $stmt->rowCount(); 预处理语句中的占位符 也可以防止 SQL 注入 $sql='select *
获取全部数据 从代码和定义中可以看出,fetch() 方法是获取当前数据集的下一行数据,就像数据库的游标操作一样。...PDO::FETCH_ORI_NEXT 是获取游标的下一条数据,而 PDO::FETCH_ORI_LAST 是获取游标的最后一条数据。...数据库中不管是查询还是增、删、改操作,都会返回语句执行结果,也就是受影响的行数。这些信息都是通过 rowCount() 这个方法获得的。...其实它就像是 PDO 对象的 exec() 方法所返回的数据。在不使用预处理语句的情况下,直接使用 PDO 的 exec() 方法执行 SQL 语句后,返回的也是语句执行后受影响的行数。...(); echo $rowCount, PHP_EOL; // 41 增、删、改语句返回受影响的行数 $stmt = $pdo->prepare("insert into zyblog_test_user
执行 SQL 语句 对于 PDO 来说,如果是查询语句,我们需要使用 query() 方法,如果是增、删、改之类的其它语句,我们要使用 exec() ,通过这两个方法分别执行不同的 SQL 语句。...记住,它返回的不是受影响的行数,这一点是需要注意的。我们如果需要获取受影响的行数需要使用 MySQLi 的属性 affected_rows 。...对于插入语句来说,获取最新插入的数据ID使用的是 insert_id 属性。...num_rows 有数据了,最后一条 SELECT now(); 语句也成功返回了。...more_results() 和 next_result() 针对这两种结果集的获取方式也是不同的,大家可以自己测一下。
select to_char((last_day(to_date(to_char(sysdate,'mm')-1,'mm'))+1),'yyyy-mm-dd')...
使用 DB 门面执行原生 SQL 语句 如果你之前没有使用过任何 PHP 框架,只是对数据库和 SQL 语句有一些初步了解,或者你的 SQL 语句过于复杂,而你又对编写安全的 SQL 语句很有信心,我们可以直接通过...由于 Laravel 数据库功能底层基于 PHP 的 PDO 实现,因此我们可以借助 PDO 的参数绑定功能来防范 SQL 注入,所以对于指定查询条件的 SQL 查询语句,可以这么实现: $name =..., [$id]); 和更新语句一样,如果删除成功,该方法返回受影响行数,删除记录不存在,返回 0,删除出错,抛出 QueryException 异常。...('id', '>', $id)->update(['name' => str_random(8)]); 同样,该方法返回的也是受影响行数,具体逻辑和原生更新语句一样,不再赘述,我们可以通过 where...(); 同样,我们通过 where 方法指定删除 id >= 11 的记录,delete 方法返回受影响行数,具体逻辑和原生删除语句也是一样的。
> 预处理语句查询: 使用预处理执行SQL时,拿到的执行结果并不是一个数组,我们需要自己将这些结果集绑定到指定的变量上,然后再通过遍历变量的方式获取到结果集中的所有数据. 如果在SELECT查询语句上也使用占位符去查询,并需要多次执行这一条语句时,也可以将mysqli_stmt对象中的bind_param()和bind_result()方法结合起来. PDO 连接MySQL数据库: PDO技术就是在SQL语句中添加了一个中间层,所有的查询方式都可以通过中间层去调用,极大的提高了数据库操作的通用性,同时安全性也得到了更好的保障,以下是基本的语句使用...> PDO 获取表中数据: 当执行查询语句时我们可以使用PDO中的Query()方法,该方法执行后返回受影响的行总数,也可以使用Fetch等语句,下面是三者的查询方式. PDO 绑定参数实现查询: 前面的查询是直接写死的SQL语句实现的查询,这里我们需要通过PDO将其参数绑定,动态的传入数据让其进行查询,该方法可以将一个列和一个指定的变量名绑定在一起. <?
然后,我们可以直接访问数组中的字段来获取结果。查询3.1 查询单行数据要查询单行数据,您可以使用fetch()方法。...接着,我们执行了该语句,并使用fetch()方法获取了查询结果的第一行数据。3.2 查询多行数据要查询多行数据,您可以使用循环结构和fetch()方法。...$e->getMessage();}在上面的示例中,我们准备了一个SELECT语句,并执行了该语句。然后,我们使用循环结构和fetch()方法逐行获取查询结果,并输出每行数据。...3.3 插入数据要插入数据,您可以使用prepare()方法准备一个INSERT语句,并使用bindParam()或bindValue()方法绑定参数,最后使用execute()方法执行语句。..., $email, PDO::PARAM_STR);$stmt->execute();在上面的示例中,我们首先获取用户输入的数据,并使用预处理语句和参数绑定来插入数据。
PHP中的PDO对象操作学习(一)初始化PDO及原始SQL语句操作 PDO 已经是 PHP 中操作数据库事实上的标准。包括现在的框架和各种类库,都是以 PDO 作为数据库的连接方式。...也就是说,我们使用 PDO::FETCH_INTO 模式的时候,修改一个元素的值,其它的元素也会跟着改变,如果使用一个数组去记录遍历的元素值,最后数组的结果也会是相同的最后一个元素的内容。...如果要获得新增加数据的 id ,就要使用 lastInserId() 方法来获取。...PHP_EOL; 同样的,在执行更新操作的时候,exec() 返回的也是受影响的行数。...$count); // int(0) 删除操作需要注意的问题和更新操作是一样的,那就是同样的 exec() 只是返回影响行数的问题,不过相对于更新操作来说,没有受影响的行数那肯定是删除失败的,没有数据被删除
php是世界上使用最广泛的web开发语言,是超文本预处理器,是一种通用的开源脚本语言,语法吸收了c语言,Java语言,和Perl的特点,利于学习,使用广泛,主要适用于web开发,PHP做出来的动态页面与其他的编程语言相比...// exec()执行一条语句并返回其受影响的记录条数 $sql = <<<EOF CREATE TABLE IF NOT EXISTS user( id INT UNSIGNED AUT_INCREMENT...image.png 了解pdo,连接数据库的方法,pdo中执行sql语句的方法,pdo中获取结果集的方法,掌握pdo中获取sql语句中的错误,错误处理的方法,事务处理,pdo中存储过程。...pdo执行sql语句: exec()方法 exec 方法返回执行sql语句后受影响的行数 int PDO::exec(string statement) 参数statement要执行的sql语句 通用insert...> php中获取结果集的方法 fetch()方法获取结果集中的下一行数据 fetchAll()方法获取结果集中的所有行 fetchColumn()方法获取结果集中下一行指定的列的值 fetch
spm=a2oq0.12575281.0.0.70471debVGb9G8&ft=t&id=569295486025 如果用户获得了源码,想快速的应用到自己的服务器上,请参看此系列文章 一,搭建配置MQTT...$LoginPhone;//更新 $count = $conn->exec($sql); //返回受影响的行数 if($count!...);//删除该手机号的信息 $count = $conn->exec($sql); //返回受影响的行数 if($count!...sql = groupInsert($TableName,$option,$value); $count = $conn->exec($sql); //返回受影响的行数...$sql = groupInsert($TableName,$option,$value); $count = $conn->exec($sql); //返回受影响的行数
文章已更新,查看地址:http://www.cnblogs.com/hooray/archive/2011/06/30/2094743.html 工作一年以来,所做的项目使用的都是ADODB,但其的代码臃肿和执行效率低导致现在需要更换...百度之后决定使用PDO,至于为什么选择PDO,这里就不再多说,大家自己去百度下就能明白。...、多条记录,返回最新一条插入记录id,返回操作记录行数等 */ /* 参数说明 int $debug 是否开启调试,开启则输出...id string $table 数据库表 string $fields 需要插入数据库的字段...> 参数的注释都写的很清楚,如果有人需要,不清楚使用方法可以直接问我。
使用 https://dev.mysql.com/doc/apis-php/en/apis-php-mysqlinfo.html 说明 咱用浏览器访问PHP文件实现对数据库的操作 1.浏览器访问的是我网站根目录的这个文件...//echo "PDO的API连接成功"; $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // 设置...$Loginpassword = $_GET["password"];//用户提交的密码 这个用来获取http过来的数据 插入数据(第一种) 一,插入数据,id是1,用户名是yang 密码是11223344...")"; insert into userinfo : 插入数据到 userinfo 表格 1 :id的值,自动递增 yang : 用户名 11223344 :密码 注:一般插入字符串型数据需要在数据两边加...")"; $count = $conn->exec($sql); //返回受影响的行数 if ($count !
这意味着如果所选的数据库服务器不支持MySQLi,数据库将模拟prepared语句。 MySQL支持面向对象API和过程API,而PDO则使用面向对象API。...在下面的小节中,我们将从使用PDO运行查询的一些常见方法开始。然后我们将演示如何使用PDO执行各种MySQL 数据操作语句。最后,我们将重点介绍几个PDO APIs,它们的用途相同,但方式不同。...无论使用PDO::exec运行什么查询,成功时都会返回受影响的行数。失败时还返回false。...以下有两者主要的问题,如果还是使用query fetch 的查询方法: 首先,我们必须确保传递给PDO::query的SQL语句是安全的。对于转义和引用的输入值必须得到很好的处理。...现在我们已经完成了使用PDO的各种任务的快速示例。这些示例非常简单,但它们向我们展示了PDO提供的一个非常容易使用和一致的API。
游标 exec 发起增删改(CDU)操作,返回受影响的行数 解析器的作用是将操作状态转化为sql语句,主要实现以下功能: distinct 是否使用distinct去重 table 设置表/别名 sql...直接设置查询语句而不需要构造 field 设置要查询的字段 join 设置要join的目标 union 设置union的目标 where 设置查询条件和参数 group 设置分组查询 having 设置分组查询条件...order 设置排序 limit 设置要取出的偏移位置和取出数量 fetchAll 取出所有数据 fetch 取出一行数据 fetchColumn 取出第一行第一个字段的数据 insert 插入数据...最后对dao封装一些常用方法: findAll 根据条件查询所有结果 find 根据条件查询一条结果 findColumn 根据条件取出指定字段的值 insert 插入数据 update 根据条件更新数据...delete 根据条件删除数据 count 根据条件获取满足的记录数 详情可参见MiniCore中的VendorModelDao, VendorDbConnect, VendorDbDaoDriver
PDO 对象方法 执行一条 SQL 语句,并返回其受影响的行数,如果没有受影响的行数则返回 0 PDOStatement 对象方法 执行一条预处理语句 PDO是一个“数据库访问抽象层”,作用是统一各种数据库的访问接口...,与MySQL和mysqli的函数库相比,PDO让跨数据库的使用更具有亲和力;与ADODB和MDB2相比,PDO更高效。...construct() — 建立一个PDO链接数据库的实例 PDO->errorCode() — 获取错误码 PDO->errorInfo() — 获取错误的信息 PDO->exec() — 处理一条SQL...语句,并返回所影响的条目数 PDO->getAttribute() — 获取一个“数据库连接对象”的属性 PDO->getAvailableDrivers() — 获取有效的PDO驱动器名称 PDO->...lastInsertId() — 获取写入的最后一条数据的主键值 PDO->prepare() — 生成一个“查询对象” PDO->query() — 处理一条SQL语句,并返回一个“PDOStatement
语句使用的参数进行审查,则会造成一种很常见的漏洞——SQL注入。...简单一点说就是将原本输入的查询变量的地方插入了SQL查询语句,破坏原SQL语句从而来实现自己的SQL查询。 SQL注入与其他常见Web漏洞一样,均是由外部可控的参数引起的。...PDO提供了一个数据访问抽象层,即不管是用那种数据库,都可以用相同的函数(方法)来查询和获取数据。 P DO随PHP5.1发行,在PHP5.0中的PECL扩展中也可以使用,无法运行于之前的PHP版本。...PDO扩展也为开发者经常使用的扩展,例如thinkphp框架就是使用的PDO扩展。...PDO::prepare 预处理 PDO::statement::execute 执行预处理语句 PHD::exec 执行一条SQL语句并返回受影响的行数 02 功能点定向审计 a.
原先已经写过一个PDO的数据库操作类,这次只是在原先基础上进行修改。 <?...php /* * 作者:胡睿 * 日期:2011/03/19 * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录、多条记录,返回最新一条插入记录id,返回操作记录行数等...sql语句 int $mode 0 返回数组 1 返回单条记录 2 返回行数 string $table 数据库表 string $fields...int $mode 0 默认insert,无返回信息 1 返回执行条目数 2 返回最后一次插入记录的id string $table 数据库表...string $fields 需要插入数据库的字段 string $values 需要插入数据库的信息,必须与$fields一一对应 */ function hrInsert(