1、需求:
已知:1)、乙個json檔案,裡面是乙個二維陣列,陣列解析出來為:
array (
0 =>
array (
'title' => '九十九',
),1 =>
array (
'title' => '電腦九十九',
),2 =>
array (
'title' => '手機九十九',
),3 =>
array (
'title' => '手機電腦九十九',
),);
2)、乙個sqlite資料庫檔案 20180824.db 新建乙個sqlite資料庫檔案
新建表 report
表字段 id words time
求:把從json中查到的資料,在sqlite中檢索,判斷是否存在;
如果存在就給sqlite加上乙個 word_sort欄位,把title在檔案中是第幾個(一次遞增,不是json檔案陣列的鍵值)寫入到word_sort欄位
思路:① 獲取jsonlist.json檔案內容並json_decode($str,true)轉為二維陣列
② 連線sqlite表
③try{}catch(){}給表增加 word_sort欄位
④ 把json檔案中的資料陣列化
⑤ 每次迴圈5000條json資料,用 in 在report表中查詢(title欄位需要拼接)
⑥ 把查詢出來的資料用 sql的批量跟新語句拼接
⑦try{}catch(){}批量更新report表資料
⑧ echo輸出執行結果
2、php**(yaf框架):
<?php /**
* @todo 組詞
* class communitycontroller
*/class combinw程式設計客棧ordcontroller extends rest");
//設定資料庫控制代碼 屬性 pdo::attr_errmode:錯誤報告。 pdo::errmode_exception: 丟擲 exceptions 異常。
$db->setattribute(pdo::attr_errmode, pdo::errmode_exception);
//加combinword欄位 start
$add_filed = 'word_sort';
$add_filed_sql = "alter table report add text(32)";
try catch(pdoexception $e)
//加combinword欄位 end
$addstep = 5000; //每次操作的資料
$word_cnt = 0;
$succ_cnt = 0;
$sort = 0;
$total = count($data);
for ( $x=0; $xgetstrbyarr($temp_json);
$temp_sql = "select * from report where words in ()";
$res = $db->query($temp_sql);
$result = $res->fetchall(pdo::fetch_assoc); //獲取陣列結果集
$words_result = array_column($result, 'words'); //結果去重
$unique_result = array_unique($words_result);
//var_export($unique_result);die;
//批量更新 start
$update_sql = "update report set = case words ";
foreach ($unique_result as $k => $v)' then ".$sort++;
}$sort += count($unique_result); //加上排序字段
$update_sql_str = $this->getstrbyarr( $unique_result );
$update_sql .= " end where words in ()";
//var_export($update_sql);die;
try ]個關鍵字,共影響了條資料 ".php_eol;
}catch(pdoexception $e)
//批量更新end
}echo "一共更新了個關鍵字,共影響了條資料 ".php_eol;
die;
} /**
* @todo 根據陣列返回拼接的字串
* @param unknown $temp_json 陣列
* @return string 字串
*/function getstrbyarr($temp_json)else
$temp_str .= "'".$v."'";
}return $temp_str;
} /**
* @todo 獲取json資料
*/public function getjson()
}
如何在PHP5中通過PDO連線SQLite3資料庫
如何在php5中通過pdo連線sqlite3資料庫 通過php 跟pdo 配置sqlite 資料庫是一件很繁瑣的事情,經過一下午的研究,終於理清了裡面的思路。現在拿出來跟大家共享。初學,錯誤請指出。首先我們先選擇要使用的 web server 軟體,由於從相容性跟效能方面的需求,我選擇了目前來說最新...
使用PHP的PDO類操作MySQL
mysql new pdo mysql host localhost sort 3306 dbname foo user,psd 值得一提的是,如果連線資料庫失敗,會丟擲乙個pdoexception異常,這樣我們就可以直接用try catch 來處理異常,不僅如此,還可以通過pdo setattri...
PHP的PDO基本操作
php 5 及以上版本建議使用以下方式連線 mysql mysqli extension i 意為 improved pdo php data objects pdo 應用在 12 種不同資料庫中,mysqli 只針對 mysql 資料庫。二者都支援預處理語句,可防止sql注入。示例 servern...