PHP mysql数据库操作类

数据库操作类是所有程序都可以实现的一个功能,下面我来分享一个PHP mysql数据库操作类,这个数据库操作类的特点是对所有保存到数据库的内容进入了过滤,可以很好的处理sql注入了,代码如下:

  1. <?php
  2. //数据库处理类
  3. class db
  4. {
  5. //SQL执行后的数据保存变量;
  6. var $db;
  7. //读取或设置当前数据的位置
  8. var $position=0;
  9. //执行SQL语句并把结果保存为db变量中;
  10. function sub_sql($str)
  11. {
  12. global $prefix;//全局函数,表前缀
  13. return str_replace("#@__",$prefix,$str);
  14. }
  15. function Sql($str)
  16. {
  17. $str=$this->sub_sql($str);
  18. $result = mysql_query($str);
  19. $i=0;
  20. while($row = mysql_fetch_array($result))
  21. {
  22. $str_array[$i]=$row;
  23. $i++;
  24. }
  25. if(emptyempty($str_array))
  26. {
  27. $str_array=array();
  28. }
  29. $this->db=$str_array;
  30. }
  31. //读取一条数据并把数据往后移一位,如果数据为空则返回为null;
  32. function Get_One()
  33. {
  34. $re=emptyempty($this->db[$this->position])?null:$this->db[$this->position];
  35. $this->position=$re?$this->position+1:$this->position;
  36. return $re;
  37. }
  38. //判断是否数据读取到结尾了
  39. function Judge()
  40. {
  41. $re=emptyempty($this->db[$this->position])?true:false;
  42. return $re;
  43. }
  44. //取得db里面的个数
  45. function Get_Num()
  46. {
  47. return count($this->db);
  48. }
  49. //更新数据库里面的数据,$t为表名,$v格式为数组格式,上标为字段名,下标为数据;$w为条件上标为字段名下标为数据,$p为条件0为等号,1为大于,-1为小于;
  50. function Set_Updata($t,$v,$w,$p=0)
  51. {
  52. $this->Sql($t);
  53. $v_str="";
  54. $w_str="";
  55. $f="";
  56. foreach($v as $key=>$vaule)
  57. {
  58. if(!is_numeric($key))
  59. {
  60. if(emptyempty($v_str))
  61. {
  62. $v_str=htmlspecialchars($key)."='".htmlspecialchars($vaule)."'";
  63. }else
  64. {
  65. $v_str=$v_str.",".htmlspecialchars($key)."='".htmlspecialchars($vaule)."'";
  66. }
  67. }
  68. }
  69. switch($p)
  70. {
  71. case 0:
  72. $f="=";
  73. break;
  74. case 1:
  75. $f=">";
  76. break;
  77. case -1:
  78. $f="<";
  79. break;
  80. }
  81. if(!emptyempty($f))
  82. {
  83. foreach($w as $key=>$vaule)
  84. {
  85. if(!is_numeric($key))
  86. {
  87. if(emptyempty($v_str))
  88. {
  89. $w_str=htmlspecialchars($key).$f.htmlspecialchars($vaule)."'";
  90. }else
  91. {
  92. $w_str=$w_str.",".htmlspecialchars($key).$f.htmlspecialchars($vaule)."'";
  93. }
  94. }
  95. }
  96. }
  97. $sql="UPDATE ".$t." SET ".$v_str." where ".$w_str;
  98. return $result = mysql_query($sql);
  99. }
  100. //删除一数据$w为条件上标为字段名下标为数据,$p为条件0为等号,1为大于,-1为小于;
  101. function Set_Del($t,$w,$p=0)
  102. {
  103. $this->sub_sql($t);
  104. $w_str="";
  105. $f="";
  106. switch($p)
  107. {
  108. case 0:
  109. $f="=";
  110. break;
  111. case 1:
  112. $f=">";
  113. break;
  114. case -1:
  115. $f="<";
  116. break;
  117. }
  118. if(!emptyempty($f))
  119. {
  120. foreach($w as $key=>$vaule)
  121. {
  122. if(!is_numeric($key))
  123. {
  124. if(emptyempty($v_str))
  125. {
  126. $w_str=htmlspecialchars($key).$f.htmlspecialchars($vaule)."'";
  127. }else
  128. {
  129. $w_str=$w_str.",".htmlspecialchars($key).$f.htmlspecialchars($vaule)."'";
  130. }
  131. }
  132. }
  133. }
  134. $str="DELETE FROM ".$t." WHERE ".$w_str;
  135. return $result = mysql_query($str);
  136. }
  137. function Add($t,$v)
  138. {
  139. $this->sub_sql($t);
  140. $k_str="";
  141. $v_str="";
  142. foreach($v as $key=>$vaule)
  143. {
  144. if(!is_numeric($key)){
  145. if(emptyempty($k_str))
  146. {
  147. $k_str=htmlspecialchars($key);
  148. $v_str="'".htmlspecialchars($vaule)."'";
  149. }else//开源代码phpfensi.com
  150. {
  151. $k_str=$k_str.",".htmlspecialchars($key);
  152. $v_str=$v_str.","."'".htmlspecialchars($vaule)."'";
  153. }
  154. }
  155. }
  156. $str="INSERT INTO ".$t."(".$k_str.")"."value(".$v_str.")";
  157. return $result = mysql_query($str);
  158. }
  159. }
  160. ?>