prepare($query); $sth->execute(); $udict = new PDO("sqlite:"._FILE_DB_USER_DICT_, "", "",array(PDO::ATTR_PERSISTENT=>true)); $udict->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); /* 开始一个事务,关闭自动提交 */ $udict->beginTransaction(); $query="INSERT INTO udict ('userid', 'pali', 'book', 'paragraph', 'wid', 'type', 'data', 'confidence', 'lang', 'modify_time') VALUES ( ? , ? , ? , ? , ? , ? , ? , ? , ? , ? )"; $stmt = $udict->prepare($query); $i=0; while($result = $sth->fetch(PDO::FETCH_ASSOC)) { try { $xmlString = "".$result["data"].""; //echo $xmlString."
"; $xmlWord = simplexml_load_string($xmlString); $wordsList = $xmlWord->xpath('//word'); foreach ($wordsList as $word) { $pali = $word->real->__toString(); foreach ($word as $key => $value) { $strValue = $value->__toString(); if($strValue !== "?" && $strValue !== "" && $strValue !== ".ctl." && $strValue !== ".a." && $strValue !== " " && mb_substr($strValue,0,3,"UTF-8") !== "[a]" && $strValue !== "_un_auto_factormean_" && $strValue !== "_un_auto_mean_"){ $iType = 0; $lang = 'pali'; switch ($key) { case 'type': $iType = 1; break; case 'gramma': $iType = 2; break; case 'mean': $iType = 3; $lang = getLanguageCode($strValue); break; case 'org': $iType = 4; break; case 'om': $iType = 5; $lang = getLanguageCode($strValue); break; case 'parent': $iType = 6; break; } if($iType>0){ $wordData = array($result["owner"], $pali,$result["book"], $result["paragraph"], $result["wid"], $iType, $strValue, 100, $lang, $result["modify_time"] ); //print_r($wordData); $stmt->execute( $wordData); } } } } } catch ( Throwable $e) { echo "Captured Throwable: " . $e->getMessage(); } $i++; if($i>10){ //break; } } //其他字典 $db_file_list=array(); array_push($db_file_list , _DIR_DICT_SYSTEM_."/sys_regular.db"); array_push($db_file_list , _DIR_DICT_SYSTEM_."/sys_irregular.db"); array_push($db_file_list , _DIR_DICT_SYSTEM_."/union.db"); array_push($db_file_list , _DIR_DICT_SYSTEM_."/comp.db"); array_push($db_file_list , _DIR_DICT_3RD_."/pm.db"); array_push($db_file_list , _DIR_DICT_3RD_."/bhmf.db"); array_push($db_file_list , _DIR_DICT_3RD_."/shuihan.db"); array_push($db_file_list , _DIR_DICT_3RD_."/concise.db"); array_push($db_file_list , _DIR_DICT_3RD_."/uhan_en.db"); foreach($db_file_list as $db_file){ if($debug){ echo "dict connect:$db_file
"; } $dbh = new PDO("sqlite:".$db_file, "", "",array(PDO::ATTR_PERSISTENT=>true)); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); $query = "select * from dict where 1"; $sth = $dbh->prepare($query); $sth->execute(); $i=0; while($result = $sth->fetch(PDO::FETCH_ASSOC)){ if(!empty($result["mean"])){ $arrMean = explode('$',$result["mean"]); foreach ($arrMean as $key => $value) { $word = trim($value," \t\n\r\0\x0B\."); if(!empty($word)){ $wordData = array($result["dict_name"], $result["pali"], 0, 0, 0, 3, $word, $result["confidence"], $result["lang"], 1 ); //print_r($wordData); $stmt->execute( $wordData); } } } if(!empty($result["type"])){ $wordData = array($result["dict_name"], $result["pali"], 0, 0, 0, 1, $result["type"], $result["confidence"], 'pali', 1 ); $stmt->execute( $wordData); //print_r($wordData); } if(!empty($result["gramma"])){ $wordData = array($result["dict_name"], $result["pali"], 0, 0, 0, 2, $result["gramma"], $result["confidence"], 'pali', 1 ); $stmt->execute( $wordData); //print_r($wordData); } if(!empty($result["parts"])){ $wordData = array($result["dict_name"], $result["pali"], 0, 0, 0, 4, $result["parts"], $result["confidence"], 'pali', 1 ); //print_r($wordData); $stmt->execute( $wordData); } if(!empty($result["partmean"])){ $wordData = array($result["dict_name"], $result["pali"], 0, 0, 0, 5, $result["partmean"], $result["confidence"], $result["lang"], 1 ); //print_r($wordData); $stmt->execute( $wordData); } if(!empty($result["parent"])){ $wordData = array($result["dict_name"], $result["pali"], 0, 0, 0, 6, $result["parent"], $result["confidence"], 'pali', 1 ); //print_r($wordData); $stmt->execute( $wordData); } if($i>10){ //break; } $i++; } } /* 提交更改 */ $udict->commit(); if (!$stmt || ($stmt && $stmt->errorCode() != 0)) { $error = $udict->errorInfo(); echo "error - $error[2]
"; } else{ echo "updata index $i recorders."; } ?>