sync.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. <?php
  2. header('Content-type: application/json; charset=utf8');
  3. //查询term字典
  4. require_once "../path.php";
  5. require_once "../public/function.php";
  6. $PDO = new PDO("sqlite:"._FILE_DB_SENTENCE_, "", "",array(PDO::ATTR_PERSISTENT=>true));
  7. $PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING);
  8. if(isset($_GET["op"])){
  9. $op=$_GET["op"];
  10. }
  11. else if(isset($_POST["op"])){
  12. $op=$_POST["op"];
  13. }
  14. switch($op){
  15. case "sync":
  16. {
  17. $time=$_POST["time"];
  18. $query = "select id as guid,modify_time from sentence where receive_time>'{$time}' limit 0,10000";
  19. $stmt = $PDO->query($query);
  20. $Fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
  21. $iFetch=count($Fetch);
  22. echo json_encode($Fetch, JSON_UNESCAPED_UNICODE);
  23. break;
  24. }
  25. case "get":
  26. {
  27. if(isset($_GET["id"])){
  28. $id=$_GET["id"];
  29. }
  30. else if(isset($_POST["id"])){
  31. $id=$_POST["id"];
  32. }
  33. else{
  34. return;
  35. }
  36. $arrId = json_decode($id);
  37. $queryId="('";
  38. foreach($arrId as $one){
  39. $queryId .= $one."','";
  40. }
  41. $queryId = substr($queryId,0,-2).")";
  42. $query = "SELECT
  43. id,
  44. block_id,
  45. book,
  46. paragraph,
  47. begin,
  48. end,
  49. tag,
  50. author,
  51. editor,
  52. text,
  53. language,
  54. ver,
  55. status,
  56. receive_time,
  57. modify_time
  58. FROM sentence
  59. WHERE id in {$queryId}";
  60. $stmt = $PDO->query($query);
  61. $Fetch = $stmt->fetchAll(PDO::FETCH_ASSOC);
  62. echo json_encode($Fetch,JSON_UNESCAPED_UNICODE);
  63. break;
  64. }
  65. case "insert":
  66. {
  67. echo "正在准备插入记录<br>";
  68. if(isset($_POST["data"])){
  69. $data=$_POST["data"];
  70. }
  71. else{
  72. echo "没有数据<br>";
  73. return;
  74. }
  75. $arrData = json_decode($data);
  76. // 开始一个事务,关闭自动提交
  77. $PDO->beginTransaction();
  78. $query="INSERT INTO sentence (
  79. 'id',
  80. 'block_id',
  81. 'book',
  82. 'paragraph',
  83. 'begin',
  84. 'end',
  85. 'tag',
  86. 'author',
  87. 'editor',
  88. 'text',
  89. 'language',
  90. 'ver',
  91. 'status',
  92. 'receive_time',
  93. 'modify_time'
  94. ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
  95. $stmt = $PDO->prepare($query);
  96. foreach($arrData as $oneParam){
  97. $param=array();
  98. $param[]=$oneParam->id;
  99. $param[]=$oneParam->block_id;
  100. $param[]=$oneParam->book;
  101. $param[]=$oneParam->paragraph;
  102. $param[]=$oneParam->begin;
  103. $param[]=$oneParam->end;
  104. $param[]=$oneParam->tag;
  105. $param[]=$oneParam->auther;
  106. $param[]=$oneParam->editor;
  107. $param[]=$oneParam->text;
  108. $param[]=$oneParam->language;
  109. $param[]=$oneParam->ver;
  110. $param[]=$oneParam->status;
  111. $param[]=mTime();
  112. $param[]=$oneParam->modify_time;
  113. $stmt->execute($param);
  114. }
  115. // 提交更改
  116. $PDO->commit();
  117. if (!$stmt || ($stmt && $stmt->errorCode() != 0)) {
  118. $error = $PDO->errorInfo();
  119. echo "error - $error[2] <br>";
  120. }
  121. else{
  122. $count=count($arrData);
  123. echo "INSERT $count recorders."."<br>";
  124. }
  125. break;
  126. }
  127. case "update":
  128. {
  129. echo "更在准备更新数据<br>";
  130. if(isset($_POST["data"])){
  131. $data=$_POST["data"];
  132. }
  133. else{
  134. echo "没有输入数据<br>";
  135. return;
  136. }
  137. $arrData = json_decode($data);
  138. // 开始一个事务,关闭自动提交
  139. try{
  140. $PDO->beginTransaction();
  141. foreach($arrData as $one){
  142. $query="UPDATE sentence SET text='{$one->text}' ,
  143. receive_time='".mTime()."' ,
  144. modify_time='{$one->modify_time}'
  145. where id='{$one->guid}'";
  146. $PDO->exec($query);
  147. }
  148. // 提交更改
  149. $PDO->commit();
  150. echo "update ".count($arrData)."<br>";
  151. }
  152. catch(Exception $e){
  153. $PDO->rollback();
  154. echo "Failed:".$e->getMessage()."<br>";
  155. }
  156. break;
  157. }
  158. }
  159. ?>