国内流行的内容管理系统(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.

92 lines
3.3KB

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