導航:首頁 > 編程語言 > phpimplodemysql

phpimplodemysql

發布時間:2023-02-21 11:16:05

A. php 把數組插入資料庫

lxydjx 正解,我來詳細補充一下吧。未經測試、、、

//初始化
$sql = array();

// 從 a.php POST 過來的值
$_POST["xinxi"] = "20-2,19-1,18-1";

// 拆分為 array("20-2", "19-1", "18-1");
$post_data = explode(",", $_POST["xinxi"]);

// 循環數組
for($i = 0; $i < count($post_data); $i++) {
// 再次拆分每一條信息為 array("20", "2"), array("19", "1"), array("18", "1")
$details = explode("-", $post_data[$i]);

// 將每一條信息添加到 $sql 數組中
array_push($sql, "(20121015194535193356, ".$details[0].", ".$details[1].")");
}

// 用 , 連接,轉換為 string
$sql = implode(",", $sql);

// 插入資料庫
mysql_query("INSERT INTO table_sales (dingid, detailsid, buynumber) VALUES ($sql)");

B. php 求一個mysqli的db類注釋盡可能的多,初學小白

mysqli一個最簡單的例子,要深入封裝的話可以自己再增加...

其實個人覺得mysqli已經沒什麼必要封裝了.....

<?php

classdb{ //類名
public$con; //定義句柄
public$result; //結果存取

publicfunction__construct($Host,$User,$Pass,$DB){ //構建函數
$this->con=newmysqli($Host,$User,$Pass,$DB); //調用mysqli類
if($this->con->connect_error){ //判斷是否有錯誤,有錯誤則返回連接錯誤代號和錯誤內容
returnarray($this->con->connect_errno,$this->con->connect_error);
}
}

publicfunctionquery($sql,$type=''){ //執行查詢,$sql為查詢語句,$type為resultmode[MYSQLI_USE_RESULT]OR[MYSQLI_STORE_RESULT]執行成功返回true,否則返回false
$this->result=empty($type)?$this->con->query($sql):$this->con->query($sql,$type);
return!$this->result?false:true;
}

publicfunctioninsertid(){ //必須先進行query才能獲得插入或更新的id
return$this->con->insert_id;
}

publicfunctionfetch($n,$t){//獲取結果集,$n必選[array][assoc][field_direct][field][fields][object][row][all],$t為$n對應的可選參數,成功返回結果集
$f='fetch_'.$n;
return$this->result->$f($t);
}

publicfunction__destruct(){ //銷毀函數
if($this->result)$this->result->close();
if($this->con)$this->con->close();
}

publicfunctionGetError(){ //獲取錯誤
returnarray($this->con->errno,$this->con->error);
}

}

$db=newdb('127.0.0.1','','','test');
if(!$db->query("insertintotb(`time`,`amount`)values('1420085532','300')")){
var_mp($db->GetError());
die();
}
echo$db->insertid(),PHP_EOL;
$db->query('select*fromtb');
while($arr=$db->fetch('array',MYSQLI_NUM)){
echo$arr['0'],'',$arr['1'],'',$arr['2'],'',PHP_EOL;
}

C. 如何利用php讀取txt文件再將數據插入到資料庫

serial_number.txt的示例內容:

serial_number.txt:

DM00001A11 0116,
SN00002A11 0116,
AB00003A11 0116,
PV00004A11 0116,
OC00005A11 0116,
IX00006A11 0116,

創建數據表:

create table serial_number(
id int primary key auto_increment not null,
serial_number varchar(50) not null
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

php代碼如下:

$conn = mysql_connect('127.0.0.1','root','') or die("Invalid query: " . mysql_error());
mysql_select_db('test', $conn) or die("Invalid query: " . mysql_error());

$content = file_get_contents("serial_number.txt");
$contents= explode(",",$content);//explode()函數以","為標識符進行拆分

foreach ($contents as $k => $v)//遍歷循環
{
$id = $k;
$serial_number = $v;
mysql_query("insert into serial_number (`id`,`serial_number`)
VALUES('$id','$serial_number')");
}

備註:方法有很多種,我這里是在拆分txt文件為數組後,然後遍歷循環得到的數組,每循環一次,往資料庫中插入一次。

再給大家分享一個支持大文件導入的

<?php
/**
* $splitChar 欄位分隔符
* $file 數據文件文件名
* $table 資料庫表名
* $conn 資料庫連接
* $fields 數據對應的列名
* $insertType 插入操作類型,包括INSERT,REPLACE
*/
function loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields=array(),$insertType='INSERT'){
if(empty($fields)) $head = "{$insertType} INTO `{$table}` VALUES('";
else $head = "{$insertType} INTO `{$table}`(`".implode('`,`',$fields)."`) VALUES('"; //數據頭
$end = "')";
$sqldata = trim(file_get_contents($file));
if(preg_replace('/\s*/i','',$splitChar) == '') {
$splitChar = '/(\w+)(\s+)/i';
$replace = "$1','";
$specialFunc = 'preg_replace';
}else {
$splitChar = $splitChar;
$replace = "','";
$specialFunc = 'str_replace';
}
//處理數據體,二者順序不可換,否則空格或Tab分隔符時出錯
$sqldata = preg_replace('/(\s*)(\n+)(\s*)/i','\'),(\'',$sqldata); //替換換行
$sqldata = $specialFunc($splitChar,$replace,$sqldata); //替換分隔符
$query = $head.$sqldata.$end; //數據拼接
if(mysql_query($query,$conn)) return array(true);
else {
return array(false,mysql_error($conn),mysql_errno($conn));
}
}

//調用示例1
require 'db.php';
$splitChar = '|'; //豎線
$file = 'sqldata1.txt';
$fields = array('id','parentid','name');
$table = 'cengji';
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields);
if (array_shift($result)){
echo 'Success!<br/>';
}else {
echo 'Failed!--Error:'.array_shift($result).'<br/>';
}
/*sqlda ta1.txt
1|0|A
2|1|B
3|1|C
4|2|D

-- cengji
CREATE TABLE `cengji` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parentid` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `parentid_name_unique` (`parentid`,`name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1602 DEFAULT CHARSET=utf8
*/

//調用示例2
require 'db.php';
$splitChar = ' '; //空格
$file = 'sqldata2.txt';
$fields = array('id','make','model','year');
$table = 'cars';
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields);
if (array_shift($result)){
echo 'Success!<br/>';
}else {
echo 'Failed!--Error:'.array_shift($result).'<br/>';
}
/* sqldata2.txt
11 Aston DB19 2009
12 Aston DB29 2009
13 Aston DB39 2009

-- cars
CREATE TABLE `cars` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`make` varchar(16) NOT NULL,
`model` varchar(16) DEFAULT NULL,
`year` varchar(16) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8
*/

//調用示例3
require 'db.php';
$splitChar = ' '; //Tab
$file = 'sqldata3.txt';
$fields = array('id','make','model','year');
$table = 'cars';
$insertType = 'REPLACE';
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields,$insertType);
if (array_shift($result)){
echo 'Success!<br/>';
}else {
echo 'Failed!--Error:'.array_shift($result).'<br/>';
}
/* sqldata3.txt
11 Aston DB19 2009
12 Aston DB29 2009
13 Aston DB39 2009
*/

//調用示例3
require 'db.php';
$splitChar = ' '; //Tab
$file = 'sqldata3.txt';
$fields = array('id','value');
$table = 'notExist'; //不存在表
$result = loadTxtDataIntoDatabase($splitChar,$file,$table,$conn,$fields);
if (array_shift($result)){
echo 'Success!<br/>';
}else {
echo 'Failed!--Error:'.array_shift($result).'<br/>';
}

//附:db.php
/* //注釋這一行可全部釋放
?>
<?php
static $connect = null;
static $table = 'jilian';
if(!isset($connect)) {
$connect = mysql_connect("localhost","root","");
if(!$connect) {
$connect = mysql_connect("localhost","Zjmainstay","");
}
if(!$connect) {
die('Can not connect to database.Fatal error handle by /test/db.php');
}
mysql_select_db("test",$connect);
mysql_query("SET NAMES utf8",$connect);
$conn = &$connect;
$db = &$connect;
}
?>

//*/
.
-- 數據表結構:

-- 100000_insert,1000000_insert

CREATE TABLE `100000_insert` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parentid` int(11) NOT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8

100000 (10萬)行插入:Insert 100000_line_data use 2.5534288883209 seconds

1000000(100萬)行插入:Insert 1000000_line_data use 19.677318811417 seconds

//可能報錯:MySQL server has gone away

//解決:修改my.ini/my.cnf max_allowed_packet=20M

閱讀全文

與phpimplodemysql相關的資料

熱點內容
奔跑程序員 瀏覽:466
伺服器如何搭建類似github 瀏覽:290
明日之後安卓太卡怎麼辦 瀏覽:502
如何使用命令方塊找到村莊 瀏覽:766
泛函壓縮映像原理 瀏覽:521
win10清除文件夾瀏覽記錄 瀏覽:964
如何查看伺服器域中所有服務 瀏覽:384
學mastercam91編程要多久 瀏覽:999
如何查伺服器地址和埠 瀏覽:911
教學雲平台app怎麼下載 瀏覽:389
單片機510教學視頻 瀏覽:624
陝西信合app怎麼查看自己的存款 瀏覽:663
風冷冰箱有壓縮機 瀏覽:274
android實現wifi連接wifi 瀏覽:669
飛豬app怎麼幫別人值機 瀏覽:924
筆記本開我的世界伺服器地址 瀏覽:546
怎樣隱藏bat命令 瀏覽:127
android開發創意 瀏覽:138
京劇貓為什麼進不去伺服器 瀏覽:784
怎麼自己免費製作一個手機app 瀏覽:582