Ⅰ 如何將php自定義函數值插入mysql
改成這樣:
mysql_query("INSERT INTO c (d) VALUES (".a(5).")",$conn);
Ⅱ 如何利用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
Ⅲ 在PHP的mysqli擴展中,連接資料庫的函數是什麼
mysqli_connect,手冊上的例子如下圖:
Ⅳ php中addslashes()函數的用途
addslashes
--
使用反斜線引用字元串
string
addslashes
(
string
str
)
返回字元串,該字元串為了資料庫查詢語句等的需要在某些字元前加上了反斜線。這些字元是單引號(')、雙引號(")、反斜線(\)與
NUL(NULL
字元)。
一個使用
addslashes()
的例子是當你要往資料庫中輸入數據時。例如,將名字
O'reilly
插入到資料庫中,這就需要對其進行轉義。大多資料庫使用
\
作為轉義符:O\'reilly。這樣可以將數據放入資料庫中,而不會插入額外的
\。當
PHP
指令
magic_quotes_sybase
被設置成
on
時,意味著插入
'
時將使用
'
進行轉義。
默認情況下,PHP
指令
magic_quotes_gpc
為
on,它主要是對所有的
GET、POST
和
COOKIE
數據自動運行
addslashes()。不要對已經被
magic_quotes_gpc
轉義過的字元串使用
addslashes(),因為這樣會導致雙層轉義。遇到這種情況時可以使用函數
get_magic_quotes_gpc()
進行檢測。
Ⅳ php連接mysql資料庫,用什麼函數
第一個問題:的1是把mysql的鏈接函數做了封裝,即封裝成類了,而2是直接使用mysql提示的內置函數鏈接資料庫,原則上用1更好一點,提供了對象,日後也方便修改移值。
第二個問題:原因是你沒有把mysql類放道對應目錄里,所以你實例化時,他就報錯,說找不到這個類。
Ⅵ 關於php連接mysql函數
由於沒有看到完整的代碼,僅就看到的代碼試作解答如下:
1.
Notice:
Undefined
variable:
db
in
C:\xampp\htdocs\shop\files\mysql.php
on
line
5
警告:未字義的變數db(第5行不太清楚是哪行代碼)。
這個錯誤提示,從已知的代碼來看,其原因應該是你在函數體里引用了一個函數體外定義的變數(db),從代碼看其實就是沒有注意到,
對於變數
作用域范圍(全局、局部)錯誤應用的問題。
簡單的說,函數
select_mycx
里找不到
db。
解決辦法:
(1).
用參數傳遞進去。
function
select_mycx($table,$by,$select_str,$number,$db)
{
.....
}
(2).
在參數體里定義全局變數引用:
function
select_mycx($table,$by,$select_str,$number)
{
global
$db;
....
}
2.Fatal
error:
Call
to
a
member
function
query()
on
a
non-object
in
C:\xampp\htdocs\shop\files\mysql.php
on
line
5
這個錯誤實際上是上面的錯誤引起的,因為$db沒有正確引入,所以再
query
當然不能正確執行。
Ⅶ 怎樣用PHP中的MySQL操作函數
1. 建立MySQL 連接:mysql_connect
resource mysql_connect([string $server[, string $username [, string $password [, bool $new_link [, int $client flags]]]]])
打開或重復使用一個到MySQL伺服器的連接。其中,server代表MySQL伺服器,可以包括埠號,例如「hostname:port」。username和password分別代表登錄MySQL伺服器使用的用戶名和密碼。
2. 選擇 MySQL 資料庫:mysql_select_db
bool mysql_select_db(string $database_name[, resource $link_identifier])
設定與指定的連接標識符所關聯的伺服器上的當前資料庫。如果沒有指定連接標識符,則使用上一個打開的連接。如果沒有打開的連接,本函數將無參數地調用mysql_connect()來嘗試打開一個資料庫連接。如果成功則返回true,失敗則返回false。每個其後的mysgl_query()調用都會作用於活動資料庫。
3. 執行查詢:mysql_query
resource mysql_query(string $query[, resource $link_identifier])
向與指定的連接標識的關聯的伺服器中的當前活動資料庫發送一條查詢。如果沒有指定 link_identifier,則使用上一個打開的連接。如果沒有打開的連接,本函數會嘗試無參數地調用mysql_connect()函數來建立一個連接,查詢結果會被緩存。mysql_query()僅對SELECT、SHOW、EXPLAIN或DESCRIBE語句返回一個資源標識符,如果查詢執行不正確則返回false。對於其他類型的SQL語句,mysgl_query()在執行成功時返回true,出錯時返回false。非false的返回值意味著查詢是合法的並能夠被伺服器執行但是並不說明任何影響到的或返回的行數。因為一條查詢執行成功了但並未影響到或並未返回任何行的情況是可能發生的。
4. 從結果集中取得一行作為枚舉數組:mysql_fetch_row
array mysql_fetch_row(resource $result)
從和指定的結果標識關聯的結果集中取得一行數據並作為數組返回。每個結果的列儲存在一個索引數組的單元中,偏移量從0開始。依次調用mysql_fetch_row()將返回結果集中的下一行,如果沒有更多行則返回false。
5. 從結果集中取得一行作為關聯數組,或數字數組,或二者兼有:mysql_fetch_array
array mysql_fetch_array(resource $result[, int $result_type])
mysql_fetch_row()的擴展版本。除了將數據以數字索引方式儲存在數組中之外,還可以將數據作為關聯索引儲存,用欄位名作為鍵名。如果結果中出現欄位名重名的現象,最後一列將優先。要訪問同名的其他列,必須用該列的數字索引或給該列起個別名。對有別名的列,用別名來訪問其內容。
6. 關閉 MySQL 連接:mysql_close
bool mysql_close([resource $link_identifier])
mysql_close()關閉指定的連接標識所關聯的到MySQL伺服器的非持久連接。如果沒有指定link_identifier,則關閉上一個打開的連接。
例PHP中使用MySQL資料庫(mysql.php)
<?php//連接MySQL資料庫
mysql_connect('localhost', 'root', '123');
//選擇當前資料庫
//等效為執行USE test
mysql_select_db('test');
//在當前資料庫執行SQL語句
$query = "SELECT * FROM students";
$result = mysql_query($query);
//操作上次查詢返回的結果集,注意$result變數一般是需要的
while($student = mysql_fetch_array($result)) {
echo '<pre>';
print_r($student);
echo '</pre>';
}
?>
Ⅷ php連接mysql資料庫的主要函數的作用與格式
mysql可通過兩種方式通過php與web相連,一種通過php的mysql相關函數,另一種通過php的odbc相關函數
相關函數如下:
mysql函數
mysql_affected_rows: 得到 mysql 最後操作影響的列數目。
mysql_close: 關閉 mysql 伺服器連線。
mysql_connect: 開啟 mysql 伺服器連線。
mysql_create_db: 建立一個 mysql 新資料庫。
mysql_data_seek: 移動內部傳回指標。
mysql_db_query: 送查詢字串 (query) 到 mysql 資料庫。
mysql_drop_db: 移除資料庫。
mysql_errno: 傳回錯誤訊息代碼。
mysql_error: 傳回錯誤訊息。
mysql_fetch_array: 傳回陣列資料。
mysql_fetch_field: 取得欄位資訊。
mysql_fetch_lengths: 傳回單列各欄資料最大長度。
mysql_fetch_object: 傳回物件資料。
mysql_fetch_row: 傳回單列的各欄位。
mysql_field_name: 傳回指定欄位的名稱。
mysql_field_seek: 設定指標到傳回值的某欄位。
mysql_field_table: 獲得目前欄位的資料表 (table) 名稱。
mysql_field_type: 獲得目前欄位的型態。
mysql_field_flags: 獲得目前欄位的旗標。
mysql_field_len: 獲得目前欄位的長度。
mysql_free_result: 釋放傳回佔用記憶體。
mysql_insert_id: 傳回最後一次使用 insert 指令的 id。
mysql_list_fields: 列出指定資料表的欄位 (field)。
mysql_list_dbs: 列出 mysql 伺服器可用的資料庫 (database)。
mysql_list_tables: 列出指定資料庫的資料表 (table)。
mysql_num_fields: 取得傳回欄位的數目。
mysql_num_rows: 取得傳回列的數目。
mysql_pconnect: 開啟 mysql 伺服器長期連線。
mysql_query: 送出一個 query 字串。
mysql_result: 取得查詢 (query) 的結果。
mysql_select_db: 選擇一個資料庫。
mysql_tablename: 取得資料表名稱。
odbc函數
使用odbc函數需安裝mysql odbc
odbc_autocommit: 開關自動更動功能。
odbc_binmode: 設定二進位資料處理方式。
odbc_close: 關閉 odbc 連結。
odbc_close_all: 關閉所有 odbc 連結。
odbc_commit: 更動 odbc 資料庫。
odbc_connect: 連結至 odbc 資料庫。
odbc_cursor: 取得游標名。
odbc_do: 執行 sql 指令。
odbc_exec: 執行 sql 指令。
odbc_execute: 執行預置 sql 指令。
odbc_fetch_into: 取得傳回的指定列。
odbc_fetch_row: 取得傳回一列。
odbc_field_name: 取得欄位名稱。
odbc_field_type: 取得欄位資料形態。
odbc_field_len: 取得欄位資料長度。
odbc_free_result: 釋出傳回資料的記憶體。
odbc_longreadlen: 設定傳回欄的最大值。
odbc_num_fields: 取得欄位數目。
odbc_pconnect: 長期連結至 odbc 資料庫。
odbc_prepare: 預置 sql 指令。
odbc_num_rows: 取得傳回列數目。
odbc_result: 取得傳回資料。
odbc_result_all: 傳回 html 表格資料。
odbc_rollback: 撤消當前交易。
odbc_setoption: 調整 odbc 設定。
Ⅸ php 如何定義函數連接資料庫
你定義的dbopen沒看見你調用?其實你可以在dbopen裡面返回$conn,例如:
function dbopen(){
.....
return $Conn;
}
$cid=dbopen();
以後就可以使用$cid變數操作資料庫