php针对mysql的删除修改表数据返回行数?mysql_affected_rows() / mysql_num_rows($rs)

成功删除一条数据,但是数据库中却没有删除成功!!!
sql语句是对的,但是id影响是0,sql语句返回0,确实执行成功了。。

对于/增/删/改  来说,返回值只有 true/false 两种情况
其中:insert,返回true,数据肯定是插入成功了.
对于update/delete.即修改/删除 来说,返回值只有返回真,代表:这个sql语句没有问题!执行成功了.
但是未必会影响数据,比如你的条件不对.    语句执行成功了返回true,

所以用判断 删/改 数据要以返回的实际行数为准
那么,在执行 delete/update 后,如何获取受影响的行数?
答:用函数 mysql_affected_rows()
mysql_affected_rows:在执行delete/update后,立即调用此函数,
可得到delete/update语句影响的行数.

 

php跟mysql交互获取表单内容,编辑

 

使用html表单post提交致使php修改表数据 [ 修正sql注入 ] [例03]

修正的重点:

html表单代码:

修正后的php数据库代码:

#号后面备注是掉了。。。

会导致用户成管理员看下图:groupid=\’1\’ 有的网站是管理员的意思

  1. 修正sql注入以后得到如下结果:
  2. QQ截图20160508212556.jpg

这个错误是传的sname太长,数据库已经不认识了

0001.jpg

多了一个单引号,这是不可避免的、、、

使用html表单post提交致使php修改表数据[注意SQL注入详解见下篇][例03]

html表单代码:

php修改表数据代码:

 

使用php链接数据库删除表信息[例02]-附上文

地址栏来一个 id=83 or 1
/*
根据$sql拼接的结果
$sql = ‘delete from stu where id=83 or 1’

1恒为真,因为所有的行,都满足条件,都被删除了.
这是一个非常简单的sql注入的例子.

怎么避免?

答:大原则,永远不要相信从客户处传来的数据

//如果是合法的id,应该是整行值才对,不应该是字符串
$id=isset($_GET[‘id’])?$_GET[‘id’]+0:0;
//字符串+0,变成整型了,就不会再有注入的功能了.

详例:

 

使用php链接数据库删除表信息[例02]

 

php连接mysql输入表信息[例01]

  1. <?php
  2.    //链接
  3.    $conn=mysql_connect(‘localhost’,’root’,’12345678′);
  4.    if($conn){
  5.        print_r($conn);
  6.    }else{
  7.        exit;
  8.    }
  9.    //选库
  10.    $sql=“use test”;
  11.    //发送sql进行查询
  12.    $rs=mysql_query($sql,$conn);//沿着conn通道进行查询
  13.    //sql字符集设置成utf8
  14.    $sql=“set names utf8”;
  15.    mysql_query($sql,$conn);
  16.    //增加一条数据
  17.    $id=rand(1,100);//随机生成1-100,数据库id
  18.    $sname=substr(str_shuffle(“abcdefghijklmnopqrstuvwxyz”),0,6);
  19.    $sql“insert into stu values ($id,’$sname’,’$sname’)”;
  20.    $rs=mysql_query($sql,$conn);
  21.    if ($rs) {
  22.        echo “添加成功”;
  23.    }else{
  24.        echo “失败”;
  25.    }
  26.    ?>
  1. mysql> create table stu (
  2.        -> id int,
  3.        -> sname varchar(20),
  4.        -> yy varchar(20)
  5.        -> )engine myisam charset utf8;
  6.    Query OK, 0 rows affected (0.10 sec)
  7.    mysql> insert into values(1,’张三’,’12456′);
  8.    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use n
  9.    ear ‘values(1,’????’,’12456′)’ at line 1
  10.    mysql> insert into stu values (1,’zhangsan’,’123456′);
  11.    Query OK, 1 row affected (0.02 sec)
  12.    mysql> select * from stu;
  13.    +——+———-+——–+
  14.    | id   | sname    | yy     |
  15.    +——+———-+——–+
  16.    |    1 | zhangsan | 123456 |
  17.    +——+———-+——–+
  18.    1 row in set (0.00 sec)
  19.    mysql> select * from stu;
  20.    +——+———-+——–+
  21.    | id   | sname    | yy     |
  22.    +——+———-+——–+
  23.    |    1 | zhangsan | 123456 |
  24.    |   18 | damjtl   | damjtl |
  25.    |    3 | nbmzoh   | nbmzoh |
  26.    |   86 | iqksgu   | iqksgu |
  27.    +——+———-+——–+
  28.    4 rows in set (0.00 sec)
  29.    mysql>

 

47.php错误报告设置

 

046.进制与位运算(下)

 

046.进制与位运算(上)

 

045.文件引入

 

044.常量系统讲解

01.jpg

 

043.超级变局变量

九大超级全局变量【注意,全大写】

$_GET //接收地址栏上的参数

$_POST //接收POST型的表单参数值(比如,用户注册时的内容,往往用$_POST来接)

$_REQUEST //默认情况下包含了$_GET,$_POST,$_COOKIE的数组,即$_REQUEST是前3者的一个并集

//比如并不想区分 $_GET,$_POST可以用 $_REQUEST来代替

$_FILES //文件上传时学

$_COOKIE

$_SESSION //用户登陆时学

$_ENV

$_SERVER //服务器还有访客的一些信息 放置的是运行脚本的当前服务器信息,和当前运行的环境信息

$GLOBALS //所有变量的一个注册表名单 页面内所有全局变量的一个名单,在

//$GLOBALS里,你能找到你声明过的所有变量

 

042.数组案例之小羊繁殖

 

041.数组常用函数

array_flip()       交换数组中的键和值
array_unique    移除数组中重复的值
array_key_exists()    检查给定的键名或索引是否存在于数组中
array_keys     返回数组中所有的键名
array_values   返回数组中所有的值
array_map($callback,array $arr1,…)    将回调函数作用到给定数组的单元上
array_merge   合并一个或多个数组array_merge() 的行为在 PHP 5 中被修改了。和 PHP 4 不同,array_merge() 现在只接受 array 类型的参数。不过可以用强制转换来合并其它类型。
array_push    将一个或多个单元压入数组的末尾(入栈)
array_pop      将数组最后一个单元弹出(出栈)
array_shift      将数组开头的单元移出数组
array_unshift   在数组开头插入一个或多个单元

shuffle     将数组打乱

040.数组游标操作

current() — 返回数组中的当前单元 默认为第0个

end() – 将数组的内部指针指向最后一个单元

each() – 返回数组中当前的键/值对并将数组指针向前移动一步

prev() – 将数组的内部指针倒回一位

reset() – 将数组的内部指针指向第一个单元  还原

next() – 将数组中的内部指针向前(右)移动一位   —

key() – 从关联数组中取得键名

通过指针函数也可以对数组进行遍历

只是这种遍历方法并不完全适用,如果数组中值为false (0,0.0, ”,””,array(), ‘0’)时,会中止遍历。

最好的遍历数组还是用foeach( as ){} 最佳