【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. v880 debug

    zte v880手机,ubuntu中配置真机调试, 1.开启手机调试模式2.增加/etc/udev/rules.d/51-android.rules. 内容如下:SUBSYSTEM=="us ...

  2. SPFA_YZOI 1662: Easy sssp

    题目描述 输入数据给出一个有N(2  < =  N  < =  1,000)个节点,M(M  < =  100,000)条边的带权有向图.  要求你写一个程序,  判断这个有向图中是 ...

  3. JavaScript学习总结【4】、JS深入

    1.JS流程控制语句 (1).if 判断 if 语句是基于条件成立时才执行相应的代码. if...else 语句是在指定的条件成立时执行if后的代码,在条件不成立时执行else后的代码. if...e ...

  4. Java:对象的序列化

    一.对象序列化机制 序列化机制允许将实现序列化的Java对象转换为字节序列,这些字节序列可以被保存在磁盘上或通过网络传输,以备以后重新恢复原来的对象: 序列化机制使得对象可以脱离程序的运行而独立存在: ...

  5. 配置nginx1.7.8支持pathinfo模式

    vi nginx/conf/nginx.conf 1.修改正则 set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ...

  6. 主流的phpcms分析

    小型网站适合wordpress,onethink,joomla(囧啦)    wordpress(免费开源) 优点:1.样式丰富,模板重多 2. 安全性 3. 对搜索引擎友好,收录快.        ...

  7. Android开源项目(转载)

    第一部分 界面 ImageView.ProgressBar及其他如Dialog.Toast.EditText.TableView.Activity Animation等等. 一.ListView an ...

  8. Django如何设置proxy

    设置porxy的原因 一般情况下我们代理设置是针对与浏览器而言,通常只需在浏览器设置中进行配置,但它只针对浏览器有效,对我们自己编写的程序并任何效果,这时就需要我们在软件编码中加入代理设置. --- ...

  9. C#委托(Delegate)学习日记

    在.NET平台下,委托类型用来定义和响应应用程序中的回调.事实上,.NET委托类型是一个类型安全的对象,指向可以以后调用的其他方法.和传统的C++函数指针不同,.NET委托是内置支持多路广播和异步方法 ...

  10. Ubuntu下安装nvidia显卡驱动

    layout: post title: Ubuntu下安装nvidia显卡驱动 date: 2015-10-02 17:19:06 categories: 常用命令 tags: 显卡 驱动 最近一直在 ...