function.php 3.8 KB

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