沒(méi)用框架就直接拼接sql語(yǔ)句啊
10年積累的成都網(wǎng)站制作、做網(wǎng)站經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有余杭免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
$sql = 'insert into tablename(field1, field2, field3) values(val1, val2, val3), (val1, val2,val3)';
主要就是拼接values后面的內(nèi)容,一個(gè)括號(hào)一條數(shù)據(jù),拼接完執(zhí)行數(shù)據(jù)庫(kù)插入操作就行了;
如果數(shù)據(jù)量很大,注意每次拼接的sql不要太長(zhǎng)了,數(shù)據(jù)庫(kù)執(zhí)行的sql也是有長(zhǎng)度限制的
思路:
讀取csv文件,每讀取一行數(shù)據(jù),就插入數(shù)據(jù)庫(kù)
示例
文件夾結(jié)構(gòu)
/
file.csv????//csv大文件,這里只模擬三行數(shù)據(jù),不考慮運(yùn)行效率(PS:csv文件格式很簡(jiǎn)單,文件一般較小,解析很快,運(yùn)行效率的瓶頸主要在寫入數(shù)據(jù)庫(kù)操作)
index.php????//php文件
file.csv
singi,20
lily,19
daming,23
index.php
/**
*?讀取csv文件,每讀取一行數(shù)據(jù),就插入數(shù)據(jù)庫(kù)
*/
//獲取數(shù)據(jù)庫(kù)實(shí)例
$dsn?=?'mysql:dbname=test;host=127.0.0.1';
$user?=?'root';
$password?=?'';
try?{
$db?=?new?PDO($dsn,?$user,?$password);
}?catch?(PDOException?$e)?{
echo?'Connection?failed:?'?.?$e-getMessage();
}
//讀取file.csv文件
if?(($handle?=?fopen("file.csv",?"r"))?!==?FALSE)?{
while?(($row?=?fgetcsv($handle,?1000,?","))?!==?FALSE)?{
//寫入數(shù)據(jù)庫(kù)
$sth?=?$db-prepare('insert?into?test?set?name=:name,age=:age');
$sth-bindParam(':name',$row[0],PDO::PARAM_STR,255);
$sth-bindParam(':age',$row[1],PDO::PARAM_INT);
$sth-execute();
}
fclose($handle);
}
數(shù)據(jù)表
CREATE?TABLE?`test`?(
`id`?INT(10)?UNSIGNED?NOT?NULL?AUTO_INCREMENT,
`name`?VARCHAR(255)?NULL?DEFAULT?''?COLLATE?'utf8mb4_bin',
`age`?INT(10)?NULL?DEFAULT?'0',
PRIMARY?KEY?(`id`)
)
COLLATE='utf8mb4_bin'
ENGINE=InnoDB;
運(yùn)行結(jié)束后,數(shù)據(jù)庫(kù)中會(huì)插入csv中的三行數(shù)據(jù)
用PHP自帶函數(shù)就可以實(shí)現(xiàn),首先要過(guò)去對(duì)方的網(wǎng)頁(yè)信息,用
file_get_contents();參數(shù)是對(duì)方的URL地址,這個(gè)函數(shù)返回是一個(gè)字符串你想要的東西就在這個(gè)字符串中了
接下來(lái)就可以針對(duì)這個(gè)字符串做處理了,說(shuō)下思路,正如你這個(gè)問(wèn)題想獲取到航班號(hào)起飛時(shí)間,在這個(gè)網(wǎng)頁(yè)中應(yīng)該有很多相同的標(biāo)簽元素,它們都有共同點(diǎn),用
用正則表達(dá)式preg_match();或者是
preg_match_all();這兩個(gè)函數(shù)它們都返回一個(gè)數(shù)組,這個(gè)數(shù)組存的就是你要的航班號(hào)和起飛時(shí)間,那么相同信息的數(shù)組就會(huì)出現(xiàn)了,然后在對(duì)這個(gè)數(shù)組進(jìn)行分析找到你要的某個(gè)值或全部的值
獲取信息要用到的3個(gè)函數(shù)是:
file_get_contents();
preg_match();
preg_match_all();
傳統(tǒng)方法是用 標(biāo)簽 將輸入的數(shù)據(jù) 提交到后臺(tái)的php, 由php獲得數(shù)據(jù)后寫入數(shù)據(jù)庫(kù), 下面SubMsg.php 就是用來(lái)處理的后臺(tái) 機(jī)器數(shù)量 后臺(tái) SubMsg.php