国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
3.2KB

  1. <?php
  2. /**
  3. * 数据库操作替换
  4. *
  5. * @version $Id: sys_data_replace.php 1 22:28 2010年7月20日Z tianya $
  6. * @package DedeBIZ.Administrator
  7. * @copyright Copyright (c) 2022, DedeBIZ.COM
  8. * @license https://www.dedebiz.com/license
  9. * @link https://www.dedebiz.com
  10. */
  11. require_once(dirname(__FILE__).'/config.php');
  12. CheckPurview('sys_Data');
  13. if (empty($action)) $action = '';
  14. if (empty($action)) {
  15. require_once(DEDEADMIN."/templets/sys_data_replace.htm");
  16. exit();
  17. }
  18. /*-------------------------------
  19. //列出数据库表里的字段
  20. function __getfields()
  21. --------------------------------*/
  22. else if ($action == 'getfields') {
  23. AjaxHead();
  24. $dsql->GetTableFields($exptable);
  25. echo "<div style='border:1px solid #ababab;background-color:#FEFFF0;margin-top:6px;padding:6px;line-height:160%'>";
  26. echo "表(".$exptable.")含有的字段:<br>";
  27. while ($row = $dsql->GetFieldObject()) {
  28. echo "<a href=\"javascript:pf('{$row->name}')\">".$row->name."</a>\r\n";
  29. }
  30. echo "</div>";
  31. exit();
  32. }
  33. /*-------------------------------
  34. //保存用户设置,清空会员数据
  35. function __Apply()
  36. --------------------------------*/
  37. else if ($action == 'apply') {
  38. $validate = empty($validate) ? '' : strtolower($validate);
  39. $svali = GetCkVdValue();
  40. if ($validate == "" || $validate != $svali) {
  41. ShowMsg("安全确认码不正确!", "javascript:;");
  42. exit();
  43. }
  44. if ($exptable == '' || $rpfield == '') {
  45. ShowMsg("请指定数据表和字段", "javascript:;");
  46. exit();
  47. }
  48. if ($rpstring == '') {
  49. ShowMsg("请指定被替换内容", "javascript:;");
  50. exit();
  51. }
  52. if ($rptype == 'replace') {
  53. $condition = empty($condition) ? '' : " WHERE $condition ";
  54. $rs = $dsql->ExecuteNoneQuery("UPDATE $exptable SET $rpfield=REPLACE($rpfield,'$rpstring','$tostring') $condition ");
  55. $dsql->ExecuteNoneQuery("OPTIMIZE TABLE `$exptable`");
  56. if ($rs) {
  57. ShowMsg("成功完成数据替换", "javascript:;");
  58. exit();
  59. } else {
  60. ShowMsg("数据替换失败", "javascript:;");
  61. exit();
  62. }
  63. } else {
  64. $condition = empty($condition) ? '' : " And $condition ";
  65. $rpstring = stripslashes($rpstring);
  66. $rpstring2 = str_replace("\\", "\\\\", $rpstring);
  67. $rpstring2 = str_replace("'", "\\'", $rpstring2);
  68. $dsql->SetQuery("SELECT $keyfield,$rpfield FROM $exptable WHERE $rpfield REGEXP '$rpstring2' $condition ");
  69. $dsql->Execute();
  70. $tt = $dsql->GetTotalRow();
  71. if ($tt == 0) {
  72. ShowMsg("根据您指定的正则,找不到任何东西", "javascript:;");
  73. exit();
  74. }
  75. $oo = 0;
  76. while ($row = $dsql->GetArray()) {
  77. $kid = $row[$keyfield];
  78. $rpf = preg_replace("#".$rpstring."#i", $tostring, $row[$rpfield]);
  79. $rs = $dsql->ExecuteNoneQuery("UPDATE $exptable SET $rpfield='$rpf' WHERE $keyfield='$kid' ");
  80. if ($rs) {
  81. $oo++;
  82. }
  83. }
  84. $dsql->ExecuteNoneQuery("OPTIMIZE TABLE `$exptable`");
  85. ShowMsg("共找到 $tt 条记录,成功替换了 $oo 条", "javascript:;");
  86. exit();
  87. }
  88. }