Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 236|回复: 0

[默认分类] 判断MYSQL语句执行结果

[复制链接]
  • TA的每日心情
    开心
    2021-12-13 21:45
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-5-28 11:30:07 | 显示全部楼层 |阅读模式



      
      
    最近在做自己的网站,有些地方要判断mysql语句是否执行成功了,或者是SELECT语句是否取到了结果,查了查资料,终于解决了。
    先来看一段php代码,有点长,建议直接运行一遍:点击下载代码
    1.    
    复制代码
    1. define("HOST","database ip");
    2.         define("USER","your database account");
    3.         define("PASS","your password");
    4.         define("DB","database name");
    5.         $con = mysql_connect(HOST,USER,PASS);
    6.         if (!$con) die("Could not connect: " . mysql_error());
    7.         mysql_select_db(DB, $con);
    8. //sql 0
    9. $sql = "DROP TABLE `test` ";
    10. $result=mysql_query($sql);
    11. if($result)echo "table `test` already exist, so I drop it to continue the test
    12. ";
    13. echo "
    14. ";
    15. //sql 1
    16. $sql="CREATE TABLE `test` (
    17.         `rid` int(11) NOT NULL AUTO_INCREMENT,
    18.         PRIMARY KEY (`rid`),
    19.         `uid` int(11) NOT NULL UNIQUE,
    20.         `face` int NOT NULL,
    21.         `nick` varchar(12) NOT NULL,
    22.         `luck` int NOT NULL DEFAULT 10
    23. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;";
    24. $result=mysql_query($sql,$con);
    25. if($result)echo "sql 1:",$sql," executed successfully
    26. ";
    27. else echo "sql 1:",$sql,"fail
    28. ";
    29. echo "
    30. ";
    31. //sql 2
    32. $sql="INSERT INTO `test`(`uid`, `face`, `nick`) VALUES ("1","1","newnius")";
    33. $result=mysql_query($sql);
    34. $count=mysql_affected_rows();
    35. if($count>0)echo "sql 2:",$sql," executed successfully
    36. ";
    37. else echo "sql 2:",$sql,"fail
    38. ";
    39. echo "
    40. ";
    41. //list records
    42. echo "list records
    43. ";
    44. $sql="SELECT * FROM `test` ";
    45. $result = mysql_query($sql);
    46. $count=mysql_num_rows($result);
    47. echo $count," record(s) found:
    48. ";
    49. while($row = mysql_fetch_array($result))echo "rid:",$row["rid"]," uid:",$row["uid"]," nick:",$row["nick"],"
    50. ";
    51. echo "
    52. ";
    53. //sql 3
    54. $sql="INSERT INTO `test`(`uid`, `face`) VALUES ("1","1")";
    55. $result=mysql_query($sql);
    56. $count=mysql_affected_rows();
    57. if($count>0)echo "sql 3:",$sql," executed successfully
    58. ";
    59. else echo "sql 3:",$sql,"fail,","because face can not be null
    60. ";
    61. echo "
    62. ";
    63. //list records
    64. echo "list records
    65. ";
    66. $sql="SELECT * FROM `test` ";
    67. $result = mysql_query($sql);
    68. $count=mysql_num_rows($result);
    69. echo $count," record(s) found:
    70. ";
    71. while($row = mysql_fetch_array($result))echo "rid:",$row["rid"]," uid:",$row["uid"]," nick:",$row["nick"],"
    72. ";
    73. echo "
    74. ";
    75. //add 3 records
    76. echo "add 3 records
    77. ";
    78. $sql="INSERT INTO `test`(`uid`, `face`, `nick`) VALUES ("2","1","order")";
    79. $result=mysql_query($sql);
    80. $sql="INSERT INTO `test`(`uid`, `face`, `nick`) VALUES ("3","2","order")";
    81. $result=mysql_query($sql);
    82. $sql="INSERT INTO `test`(`uid`, `face`, `nick`) VALUES ("4","3","order")";
    83. $result=mysql_query($sql);
    84. echo "
    85. ";
    86. //list records
    87. echo "list records
    88. ";
    89. $sql="SELECT * FROM `test` ";
    90. $result = mysql_query($sql);
    91. $count=mysql_num_rows($result);
    92. echo $count," record(s) found:
    93. ";
    94. while($row = mysql_fetch_array($result))echo "rid:",$row["rid"]," uid:",$row["uid"]," nick:",$row["nick"],"
    95. ";
    96. echo "
    97. ";
    98. //sql 4
    99. $sql="SELECT * FROM `test` WHERE nick="newnius" LIMIT 1";
    100. $result = mysql_query($sql);
    101. $count=mysql_num_rows($result);
    102. if($count){
    103.         echo "sql 4:",$sql," executed successfully.
    104. ";
    105.         echo $count," record(s) found:
    106. ";
    107.         while($row = mysql_fetch_array($result))echo "rid:",$row["rid"]," uid:",$row["uid"]," nick:",$row["nick"],"
    108. ";
    109. }
    110. else echo "sql 4:",$sql,"fail
    111. ";
    112. echo "
    113. ";
    114. //sql 5
    115. $sql="UPDATE `test` SET uid = "10086" WHERE nick="newnius"";
    116. $result = mysql_query($sql);
    117. $count=mysql_affected_rows();
    118. if($count>0)
    119. {
    120.         echo "sql 5:",$sql," executed successfully
    121. ";
    122.         echo $count," record(s) is(are) affected
    123. ";
    124. }
    125. else echo "sql 5:",$sql,"fail
    126. ";
    127. echo "
    128. ";
    129. //list records
    130. echo "list records
    131. ";
    132. $sql="SELECT * FROM `test` ";
    133. $result = mysql_query($sql);
    134. $count=mysql_num_rows($result);
    135. echo $count," record(s) found:
    136. ";
    137. while($row = mysql_fetch_array($result))echo "rid:",$row["rid"]," uid:",$row["uid"]," nick:",$row["nick"],"
    138. ";
    139. echo "
    140. ";
    141. //sql 6
    142. $sql="UPDATE `test` SET uid = "10086" WHERE nick="unknown"";
    143. $result = mysql_query($sql);
    144. $count=mysql_affected_rows();
    145. if($count>0)echo "sql 6:",$sql," executed successfully
    146. ";
    147. else echo "sql 6:",$sql,"fail, because no record found
    148. ";
    149. echo "
    150. ";
    151. //list records
    152. echo "list records
    153. ";
    154. $sql="SELECT * FROM `test` ";
    155. $result = mysql_query($sql);
    156. $count=mysql_num_rows($result);
    157. echo $count," record(s) found:
    158. ";
    159. while($row = mysql_fetch_array($result))echo "rid:",$row["rid"]," uid:",$row["uid"]," nick:",$row["nick"],"
    160. ";
    161. echo "
    162. ";
    163. //sql 7
    164. $sql="DELETE FROM `test` WHERE nick ="order"";
    165. $result = mysql_query($sql);
    166. $count=mysql_affected_rows();
    167. if($count>0)
    168. {
    169.         echo "sql 7:",$sql," executed successfully
    170. ";
    171.         echo $count," record(s) deleted
    172. ";
    173. }
    174. else echo "sql 7:",$sql,"fail
    175. ";
    176. echo "
    177. ";
    178. //list records
    179. echo "list records
    180. ";
    181. $sql="SELECT * FROM `test` ";
    182. $result = mysql_query($sql);
    183. $count=mysql_num_rows($result);
    184. echo $count," record(s) found:
    185. ";
    186. while($row = mysql_fetch_array($result))echo "rid:",$row["rid"]," uid:",$row["uid"]," nick:",$row["nick"],"
    187. ";
    188. echo "
    189. ";
    190. //sql 8
    191. $sql="DELETE FROM `test` WHERE nick ="order"";
    192. $result = mysql_query($sql);
    193. $count=mysql_affected_rows();
    194. if($count>0)echo "sql 8:",$sql," executed successfully
    195. ";
    196. else echo "sql 8:",$sql,"fail, because no record found
    197. ";
    198. echo "
    199. ";
    200. //list records
    201. echo "list records
    202. ";
    203. $sql="SELECT * FROM `test` ";
    204. $result = mysql_query($sql);
    205. $count=mysql_num_rows($result);
    206. echo $count," record(s) found:
    207. ";
    208. while($row = mysql_fetch_array($result))echo "rid:",$row["rid"]," uid:",$row["uid"]," nick:",$row["nick"],"
    209. ";
    210. echo "
    211. ";
    212. //sql 9
    213. $sql = "DROP TABLE `test` ";
    214. $result=mysql_query($sql);
    215. if($result)echo "sql 9:",$sql," executed successfully
    216. ";
    217. else echo "sql 9:",$sql,"fail
    218. ";
    219. echo "
    220. ";
    221. mysql_close($con);
    222. echo "test finished, thank you!
    223. ";
    224. echo "
    225. ";
    226. echo "click here to visit my blog
    227. ";
    228. echo "
    229. ";
    230. ?>
    复制代码


      
      
      
    [code][/code]


    从代码中可以看出,判断INSERT、UPDATE、DELETE 用的判断方法是mysql_affected_rows() ,该方法返回的是最近一次与 link_identifier 关联的 INSERT、UPDATE 或 DELETE 查询所影响的记录行数。关于mysql_affected_rows()的返回值,w3school是如此说明的:
    1、执行成功,则返回受影响的行的数目,如果最近一次查询失败的话,函数返回 -1。
    2、如果最近一次操作是没有任何条件(WHERE)的 DELETE 查询,在表中所有的记录都会被删除,但本函数返回值在 4.1.2 版之前都为 0。
    3、当使用 UPDATE 查询,MySQL 不会将原值与新值一样的列更新。这样使得 mysql_affected_rows() 函数返回值不一定就是查询条件所符合的记录数,只有真正被修改的记录数才会被返回。
    4、REPLACE 语句首先删除具有相同主键的记录,然后插入一个新记录。该函数返回的是被删除的记录数加上被插入的记录数。
    显然,INSERT、UPDATE 或 DELETE都(可能,指UPDATE)会改变数据表,所以可以用该函数。然而SELECT语句不会对数据表进行改动,故该函数不能用来判断SELECT的执行情况。
    不过既然SELECT语句是为了取出符合条件的结果,我们就可以对结果进行分析,用mysql_num_rows($result) 这个函数得到结果的记录数。
    由此可见,两个函数就可以基本解决我们的问题啦。




    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-6-1 13:29 , Processed in 0.344724 second(s), 37 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表