【PDO对象操作数据库】

PDOstament对象执行execute()函数,只要是sql语句正确都是返回true。

问题:

想要PDO对象实现更改一条记录, 并修改是否成功要返回信息给用户。

上我的代码:

//PDO对象实现更改一条记录

    $sql4= "update xs_user set `passwd`=md5('123') where `username`=? and `sex`=?";
echo $sql4;
$stmt = $pdo->prepare($sql4);
$username = "bright009";
$sex = "女"; //一种是直接写在execute的参数array()带进去,一种是通过绑定参数法
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $sex);
$flag4 = $stmt->execute();
//当返回值为真时,就表示修改成功
if($flag){ //array('bright006','男')当查询的条件多个时,直接按序写在array数组里面即可 $data = $stmt->fetch();
$smarty->assign("flag","ok"); }else{
$smarty->assign("flag","fail");
}
$smarty -> display("test.tpl");

我错误的原因是:

把PDOstament对象执行execute()函数后返回的值误以为成修改成功或失败。其实执行execute函数,只要sql语句正确,返回值都是false,所以我这里所写的sql语句是正确的,但是在数据库中并没有此记录,它仍然是返回true,所以我就卡在这里了。

多次查看手册+百度无果,上群问其他人还真是一个好方法。

解决方法:

既然自己要返回一个是否修改成功的信息给用户,可以使用一个rowCount()函数统计被影响的行数$res,然后根据$res是否>0做判断就好了。

改后的代码:

//PDO对象实现更改一条记录

    $sql4= "update xs_user set `passwd`=md5('123') where `username`=? and `sex`=?";
echo $sql4;
$stmt = $pdo->prepare($sql4);
$username = "bright009";
$sex = "女"; //一种是直接写在execute的参数array()带进去,一种是通过绑定参数法
$stmt->bindParam(1, $username);
$stmt->bindParam(2, $sex);
$flag4 = $stmt->execute();
$res = $stmt->rowCount();
if($res>0){ //array('bright006','男')当查询的条件多个时,直接按序写在array数组里面即可 $data = $stmt->fetch();
$smarty->assign("flag","ok"); }else{
$smarty->assign("flag","fail");
}
$smarty -> display("test.tpl");

PDOstament对象执行execute()函数,只要是sql语句正确都是返回true的更多相关文章

  1. ADO方式,VC调用Execute执行INSERT INTO插入变量SQL语句的写法

    ADO方式,VC调用Execute执行INSERT INTO插入变量SQL语句的写法 有些情况下,SQL SERVER 2008r2中需要保存float,int类型的数据,当C 中的变量为double ...

  2. MySql定位执行效率较低的SQL语句

    MySQL能够记录执行时间超过参数 long_query_time 设置值的SQL语句,默认是不记录的. 获得初始锁定的时间不算作执行时间.mysqld在SQL执行完和所有的锁都被释放后才写入日志.且 ...

  3. EF5中 执行 sql语句使用Database.ExecuteSqlCommand 返回影响的行数 ; EF5执行sql查询语句 Database.SqlQuery 带返回值

    一: 执行sql语句,返回受影响的行数 在mysql里面,如果没有影响,那么返回行数为  -1 ,sqlserver 里面  还没有测试过 using (var ctx = new MyDbConte ...

  4. 在C#中执行带有GO的批量sql语句

    引用 思海网络  在用C#中调用ADO执行批量SQL语句的时候,会出现无法识别GO语句的错误.这个时候,我们以GO语句为分割点,把整个批量语句分割成N块独立的SQL语句代码块(不包含GO语句),然后再 ...

  5. 判断mysqli函数里的sql语句是否有错和影响行数

    <?php $mysqli=@new mysqli("localhost", "root", "123456", "xsph ...

  6. 【存储过程】用SQL语句获得一个存储过程返回的表

    定义一个存储过程如下: create proc [dbo].[test1] @id int as select 1 as id,'abc' as name union all select @id a ...

  7. Excel 提供数据 更新或者插入数据 通过函数 自动生成SQL语句

    excel 更新数据 ="UPDATE dbo.yt_vehicleExtensionBase SET yt_purchase_date='"&B2&"' ...

  8. 每条sql语句实际上都是一个事物(事物多种类型解读)

    事务(数据库引擎) 事务是作为单个逻辑工作单元执行的一系列操作.一个逻辑工作单元必须有四个属性,称为原子性.一致性.隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务.原子性事务必须是原子工 ...

  9. 用SQL语句获得一个存储过程返回的表

    1. 定义一个表变量 declare @table table(ReportType nvarchar(30),ReportPath nvarchar(200),ParaCnt int,DataAre ...

随机推荐

  1. windows phone 之ListBox模板选择

    有时做项目时,会遇到一种情况:需要把获取到的数据集合显示到首页,比如新闻,但是: 新闻也分类别啊,比如:图片类新闻.文字类新闻.视频类新闻. 那我们可能采用的模板就不一样了,那么,如何根据类别来选择模 ...

  2. HTML 5结构

    进行总体布局时候,具体可以用的方法. 1.大纲:文档中各内容区块的结构编排. 内容区块可以使用标题元素来展示各级内容区块的标题. 关于内容区块的编排可以分为“显示编排”和“隐式编排”. 显示编排:明确 ...

  3. php引用(&)详解及注意事项

    php的引用(就是在变量或者函数.对象等前面加上&符号) 在PHP 中引用的意思是:不同的名字访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容,在内存中存 ...

  4. JS禁止横竖屏切换,强制横竖屏显示

    js判断屏幕横竖屏: function orient() { //alert('gete'); if (window.orientation == 0 || window.orientation == ...

  5. Atlassian、Slack 以及 ChatOps 未来的前景如何?

    在大家纷纷谈起 DevOps 和 ChatOps 的时候,Martin Giles 也对 ChatOps 的前景有自己的看法.他曾是<经济学人>的记者,现在是 Wing Venture C ...

  6. Java 8:如何使用流方式查询数据库?

    Speedment 是使用 ORM 方式操作数据库的一种选择,以前我们需要100行操作数据库的 Java 代码,在 Java 8中,可能只需要一行代码. 在90年代末,我使用 Java 开发数据库应用 ...

  7. python处理csv数据

    import csv #从文件读取 reader = csv.reader(file(srcFilePath,'rb')) for line in reader: #忽略第一行 if reader.l ...

  8. ADI加速度计基础原理

  9. utf8_to_utf16

    17down voteaccepted Here's some code. Only lightly tested and there's probably a few improvements. C ...

  10. 《深度探索c++对象模型》chapter3 Data语意学

    一个空的class:如 class X{} ; sizeof(X)==1; sizeof为什么为1,他有一个隐晦的1 byte,那是被编译器安插进去的一个char,这使得class2的两个object ...