以下為幾個(gè)php連接access數(shù)據(jù)庫(kù)和操作acess數(shù)據(jù)的方法,全部做成了類,應(yīng)用起來(lái)也更方便,也可摘用其中的部分代碼應(yīng)用。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、重慶小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了大渡口免費(fèi)建站歡迎大家使用!
?php
--------------------------------------------------------------------
//FileName:class.php
//Summary: Access數(shù)據(jù)庫(kù)操作類
// 使用范例:
//$databasepath="database.mdb";
//$dbusername="";
//$dbpassword="";
//include_once("class.php");
//$access=new Access($databasepath,$dbusername,$dbpassword);
--------------------------------------------------------------------
class Access
{
var $databasepath,$constr,$dbusername,$dbpassword,$link;
function Access($databasepath,$dbusername,$dbpassword)
{
$this-databasepath=$databasepath;
$this-username=$dbusername;
$this-password=$dbpassword;
$this-connect();
}
function connect()
{
$this-constr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath($this-databasepath);
$this-link=odbc_connect($this-constr,$this-username,$this-password,SQL_CUR_USE_ODBC);
return $this-link;
//if($this-link) echo "恭喜你,數(shù)據(jù)庫(kù)連接成功!";
//else echo "數(shù)據(jù)庫(kù)連接失敗!";
}
function query($sql)
{
return @odbc_exec($this-link,$sql);
}
function first_array($sql)
{
return odbc_fetch_array($this-query($sql));
}
function fetch_row($query)
{
return odbc_fetch_row($query);
}
function total_num($sql)//取得記錄總數(shù)
{
return odbc_num_rows($this-query($sql));
}
function close()//關(guān)閉數(shù)據(jù)庫(kù)連接函數(shù)
{
odbc_close($this-link);
}
function insert($table,$field)//插入記錄函數(shù)
{
$temp=explode(',',$field);
$ins='';
for ($i=0;$icount($temp);$i++)
{
$ins.="'".$_POST[$temp[$i]]."',";
}
$ins=substr($ins,0,-1);
$sql="INSERT INTO ".$table." (".$field.") VALUES (".$ins.")";
$this-query($sql);
}
function getinfo($table,$field,$id,$colnum)//取得當(dāng)條記錄詳細(xì)信息
{
$sql="SELECT * FROM ".$table." WHERE ".$field."=".$id."";
$query=$this-query($sql);
if($this-fetch_row($query))
{
for ($i=1;$i$colnum;$i++)
{
$info[$i]=odbc_result($query,$i);
}
}
return $info;
}
function getlist($table,$field,$colnum,$condition,$sort="ORDER BY id DESC")//取得記錄列表
{
$sql="SELECT * FROM ".$table." ".$condition." ".$sort;
$query=$this-query($sql);
$i=0;
while ($this-fetch_row($query))
{
$recordlist[$i]=getinfo($table,$field,odbc_result($query,1),$colnum);
$i++;
}
return $recordlist;
}
function getfieldlist($table,$field,$fieldnum,$condition="",$sort="")//取得記錄列表
{
$sql="SELECT ".$field." FROM ".$table." ".$condition." ".$sort;
$query=$this-query($sql);
$i=0;
while ($this-fetch_row($query))
{
for ($j=0;$j$fieldnum;$j++)
{
$info[$j]=odbc_result($query,$j+1);
}
$rdlist[$i]=$info;
$i++;
}
return $rdlist;
}
function updateinfo($table,$field,$id,$set)//更新記錄
{
$sql="UPDATE ".$table." SET ".$set." WHERE ".$field."=".$id;
$this-query($sql);
}
function deleteinfo($table,$field,$id)//刪除記錄
{
$sql="DELETE FROM ".$table." WHERE ".$field."=".$id;
$this-query($sql);
}
function deleterecord($table,$condition)//刪除指定條件的記錄
{
$sql="DELETE FROM ".$table." WHERE ".$condition;
$this-query($sql);
}
function getcondrecord($table,$condition="")// 取得指定條件的記錄數(shù)
{
$sql="SELECT COUNT(*) AS num FROM ".$table." ".$condition;
$query=$this-query($sql);
$this-fetch_row($query);
$num=odbc_result($query,1);
return $num;
}
}
?
22222222
class.php文件:
[php]
?php
class Access//Access數(shù)據(jù)庫(kù)操作類
{
var $databasepath,$constr,$dbusername,$dbpassword,$link;//類的屬性
function Access($databasepath,$dbusername,$dbpassword)//構(gòu)造函數(shù)
{
$this-databasepath=$databasepath;
$this-username=$dbusername;
$this-password=$dbpassword;
$this-connect();
}
function connect()//數(shù)據(jù)庫(kù)連接函數(shù)
{
$this-constr="DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" . realpath($this-databasepath);
$this-link=odbc_connect($this-constr,$this-username,$this-password,SQL_CUR_USE_ODBC);
return $this-link;
//if($this-link) echo "恭喜你,數(shù)據(jù)庫(kù)連接成功!";
//else echo "數(shù)據(jù)庫(kù)連接失敗!";
}
function query($sql)//送一個(gè)查詢字符串到數(shù)據(jù)庫(kù)中
{
return @odbc_exec($this-link,$sql);
}
function first_array($sql)//從access數(shù)據(jù)庫(kù)中返回一個(gè)數(shù)組
{
return @odbc_fetch_array($this-query($sql));
}
function fetch_row($query)//返回記錄中的一行
{
return odbc_fetch_row($query);
}
function total_num($sql)//取得記錄總數(shù)
{
return odbc_num_rows($this-query($sql));
}
function close()//關(guān)閉數(shù)據(jù)庫(kù)連接函數(shù)
{
odbc_close($this-link);
}
function insert($table,$field)//插入記錄函數(shù)
{
$temp=explode(',',$field);
$ins='';
for ($i=0;$i {
$ins.="'".$_POST[$temp[$i]]."',";
}
$ins=substr($ins,0,-1);
$sql="INSERT INTO ".$table." (".$field.") VALUES (".$ins.")";
$this-query($sql);
}
function getinfo($table,$field,$id,$colnum)//取得當(dāng)條記錄詳細(xì)信息
{
$sql="SELECT * FROM ".$table." WHERE ".$field."=".$id."";
$query=$this-query($sql);
if($this-fetch_row($query))
{
for ($i=1;$i$colnum;$i++)
{
$info[$i]=odbc_result($query,$i);
}
}
return $info;
}
function getlist($table,$field,$colnum,$condition,$sort="ORDER BY id DESC")//取得記錄列表
{
$sql="SELECT * FROM ".$table." ".$condition." ".$sort;
$query=$this-query($sql);
$i=0;
while ($this-fetch_row($query))
{
$recordlist[$i]=getinfo($table,$field,odbc_result($query,1),$colnum);
$i++;
}
return $recordlist;
}
function getfieldlist($table,$field,$fieldnum,$condition="",$sort="")//取得記錄列表
{
$sql="SELECT ".$field." FROM ".$table." ".$condition." ".$sort;
$query=$this-query($sql);
$i=0;
while ($this-fetch_row($query))
{
for ($j=0;$j$fieldnum;$j++)
{
$info[$j]=odbc_result($query,$j+1);
}
$rdlist[$i]=$info;
$i++;
}
return $rdlist;
}
function updateinfo($table,$field,$id,$set)//更新記錄函數(shù)
{
$sql="UPDATE ".$table." SET ".$set." WHERE ".$field."=".$id;
$this-query($sql);
}
function deleteinfo($table,$field,$id)//刪除記錄函數(shù)
{
$sql="DELETE FROM ".$table." WHERE ".$field."=".$id;
$this-query($sql);
}
function deleterecord($table,$condition)//刪除指定條件的記錄函數(shù)
{
$sql="DELETE FROM ".$table." WHERE ".$condition;
$this-query($sql);
}
function getcondrecord($table,$condition="")//取得指定條件的記錄數(shù)函數(shù)
{
$sql="SELECT COUNT(*) AS num FROM ".$table." ".$condition;
$query=$this-query($sql);
$this-fetch_row($query);
$num=odbc_result($query,1);
return $num;
}
}
?
[/php]
數(shù)據(jù)庫(kù)連接文件:
[php]
?php
$databasepath="data/database.mdb";//數(shù)據(jù)庫(kù)路徑
$dbusername="";//數(shù)據(jù)庫(kù)用戶名
$dbpassword="";//數(shù)據(jù)庫(kù)密碼
include_once("class.php");//調(diào)用數(shù)據(jù)庫(kù)操作類
$access=new Access($databasepath,$dbusername,$dbpassword);//新建一個(gè)數(shù)據(jù)庫(kù)操作類的對(duì)象
?
[/php]
[php]
?php
$sql="select * from $info where id=$id";
$result=$access-query($sql)or die("error2");
$array=odbc_fetch_array($result);
?
[/php]
333333333333
這個(gè)是為了 同時(shí)可以使用access和mysql而做的 先弄一個(gè)mysql的 然后又寫一個(gè)access的 所有的函數(shù)一一對(duì)應(yīng) 你可以看下 絕對(duì)原創(chuàng)喔~~
配置文件如下
$config['db']['type'] = "Mysql"; //數(shù)據(jù)庫(kù)類型“Mysql”,“Access”
$config['db']['database']= "ourcms"; //數(shù)據(jù)庫(kù)(文件)名
$config['db']['host'] = ""; //數(shù)據(jù)庫(kù)主機(jī)
$config['db']['username']= "7king"; //數(shù)據(jù)庫(kù)連接用戶名
$config['db']['password']= "tingting"; //數(shù)據(jù)庫(kù)連接密碼
/*
$config['db']['type'] = "Access"; //數(shù)據(jù)庫(kù)類型“Mysql”,“Access”
$config['db']['database']= "ourcms.mdb";//數(shù)據(jù)庫(kù)(文件)名
$config['db']['host'] = "";
$config['db']['username']= "";
$config['db']['password']= "";
?php
/**
* 2007.04 by zhaohe
*
* php連接access通用類
*
* 用法:
* 建立new Access類 = set_db設(shè)置數(shù)據(jù)路徑 = set_login 設(shè)置連接數(shù)據(jù)庫(kù)的用戶名和密碼
* = 通過set_conn 設(shè)置連接 =
* {
get_result 獲取查詢執(zhí)行結(jié)果; get_result_rows 獲取查詢執(zhí)行列表,一般是select
insert_info 插入新的記錄 update_info更新記錄
}
*
*
*/
class Access {
/**
* 類變量定義
* @param $conn mysql連接號(hào)
* @param $error 錯(cuò)誤代號(hào)
* @param $username/$password 數(shù)據(jù)庫(kù)連接用戶名和密碼
* @param array $err_info 錯(cuò)誤信息
*
* @param $debuginfo 調(diào)試信息
* @param $table 當(dāng)前操作數(shù)據(jù)表
*/
var $conn;
var $error;
var $database;
var $username = "";
var $password = "";
var $err_info = array(
0 = "沒有錯(cuò)誤!",
1 = "數(shù)據(jù)庫(kù)連接失敗!",
2 = "sql執(zhí)行出錯(cuò)!"
);
var $debuginfo="";
var $table;
/**
* 默認(rèn)構(gòu)造方法
**/
function Access( $arr=null ){
if( is_array($arr) ) {
$this-set_login( $arr['host'] , $arr['username'] , $arr['password'] );
$this-set_db( $arr['database'] );
$this-set_conn();
}
}
/**
* 設(shè)置數(shù)據(jù)庫(kù)文件名
* @param string $dbfile
*
* return void
*/
function set_db ( $dbfile ){
$this-database = $dbfile;
}
/**
* 設(shè)置連接數(shù)據(jù)庫(kù)的用戶名和密碼
* @param string $user 用戶名
* @param string $pwd 密碼
*
* @return void
*/
function set_login ( $user , $pwd ){
$this-username=$user;
$this-password=$pwd;
}
/**
* 創(chuàng)建數(shù)據(jù)庫(kù)連接
* @param
* return void
*/
function set_conn ( ){
if($this-conn=odbc_connect("DRIVER=Microsoft Access Driver (*.mdb);DBQ=".realpath($this-database),$this-username,$this-password,SQL_CUR_USE_ODBC )) $this-error=0;
else $this-error=1;
}
/**
* 設(shè)置當(dāng)前操作的數(shù)據(jù)表
* @param string $tb
*
* @return void
*/
function set_table( $tb ) {
$this-table = $tb;
}
/**
* 返回sql查詢結(jié)果
* @param string $sql sql語(yǔ)句
*
* @return #id
*/
function get_result( $sql ){
return odbc_do( $this-conn , $sql );
}
/**
* 獲取查詢的結(jié)果
* @param string $sql
*
* @return array 結(jié)果的二維數(shù)組
*/
function get_result_rows( $sql ){
$array = array() ;
$result = $this-get_result( $sql );
while( $row = odbc_fetch_array( $result ) )
$array[] = $row ;
return $array;
}
/**
* 獲取部分查詢結(jié)果
*
* @param Array 數(shù)組
* @return Array
*/
function get_query_result( $cols , $tb=null , $order=null , $limit=null , $start=0 ) {
if( empty($tb) ) $tb=$this-table;
else $this-table=$tb;
if( is_array($cols) ) $col="[".implode('],[',$cols)."]";
else $col = $cols;
if( empty($limit) )
$sql = "select $col from $tb";
else
$sql ="select top $limit $col from $tb";;
if( isset($order) ) $sql.=" order by $order";
return $this-get_result_rows($sql);
}
/**
* 執(zhí)行數(shù)據(jù)庫(kù)插入操作
*
* @param $arr values列表,數(shù)組索引為數(shù)據(jù)表字段
* @param $tb 操作數(shù)據(jù)表 如果為空則為設(shè)置的當(dāng)前類的操作表
*/
function insert_info( $arr , $tb = "" ) {
$cols = array_keys( $arr );
$values = array_values( $arr );
if (empty($tb)) $tb = $this-tb;
/*
foreach( $arr as $key = $value ){
$cols[] = $key;
$values[] = $value;
}
*/
$sql = "insert into [$tb]([".implode("],[",$cols)."]) values('".implode("','",$values)."')";
//return $sql;
return $this-get_result( $sql );
}
/**
* 執(zhí)行數(shù)據(jù)庫(kù)更新操作
*
* @param array $arr 要更新的字段值 數(shù)組索引為表字段名
* @param array $con 條件數(shù)組
* @param string $tb 要操作的數(shù)據(jù)表
*
*/
function update_info( $arr , $con , $tb = "" ) {
$cols = array();
$conditions = array();
if (empty( $tb )) $tb = $this-tb;
foreach( $arr as $key = $value ){
$cols[] = "[$key]='$value'";
}
foreach( $con as $key = $value ) {
//檢查數(shù)據(jù)類型
if( is_int($value) || is_float($value) )
$conditions[] = "[$key]=$value";
else
$conditions[] = "[$key]='$value'";
}
$sql = "update [$tb] set ".implode(",",$cols)." where ".implode(" and ",$conditions);
//return $sql;
return $this-get_result( $sql );
}
}
?
mysql的類如下
class Mysql {
/**
* mysql連接執(zhí)行類,將sql的執(zhí)行實(shí)現(xiàn)數(shù)據(jù)庫(kù)無(wú)關(guān)性
*
*
*
*/
/**
* 類變量定義
* @param $conn mysql連接號(hào)
* @param $error 錯(cuò)誤代號(hào)
* @param $username/$password 數(shù)據(jù)庫(kù)連接用戶名和密碼
* @param array $err_info 錯(cuò)誤信息
*
* @param $debuginfo 調(diào)試信息
* @param $table 當(dāng)前操作數(shù)據(jù)表
*/
var $conn;
var $error;
var $username = "";
var $password = "";
var $host;
var $database;
var $err_info = array(
0 = "沒有錯(cuò)誤!",
1 = "數(shù)據(jù)庫(kù)連接失敗!",
2 = "sql執(zhí)行出錯(cuò)!"
);
var $debuginfo="";
var $table;
function Mysql( $arr=null ) {
if( is_array($arr) ) {//var_dump($arr);
$this-set_login( $arr['host'] , $arr['username'] , $arr['password'] );
$this-set_db( $arr['database'] );
$this-set_conn();
if( isset($this-error) $this-error!=0 ) die($this-err_info[$this-error]);
}
}
/**
* 設(shè)置數(shù)據(jù)庫(kù)名
* @param string $database
*
* return void
*/
function set_db ( $dbfile ){
$this-database = $dbfile;
}
/**
* 設(shè)置連接數(shù)據(jù)庫(kù)的用戶名和密碼
* @param string $user 用戶名
* @param string $pwd 密碼
*
* @return void
*/
function set_login ( $host , $user , $pwd ){
$this-host=$host;
$this-username=$user;
$this-password=$pwd;
}
/**
* 創(chuàng)建數(shù)據(jù)庫(kù)連接
* @param
* return void
*/
function set_conn (){
$this-conn=mysql_connect($this-host,$this-username,$this-password );
if ( isset($this-conn) mysql_select_db($this-database) )
$this-error=0;
else
$this-error=1;
}
/**
* 設(shè)置當(dāng)前操作的數(shù)據(jù)表
* @param string $tb
*
* @return void
*/
function set_table( $tb ) {
$this-table = $tb;
}
/**
* 返回sql查詢結(jié)果
* @param string $sql sql語(yǔ)句
*
* @return #id
*/
function get_result( $sql ){
return mysql_query( $sql , $this-conn );
}
/**
* 獲取查詢的結(jié)果
* @param string $sql
*
* @return array 結(jié)果的二維數(shù)組
*/
function get_result_rows( $sql ){
$array = array() ;
$result = $this-get_result( $sql );
while( $row = mysql_fetch_assoc( $result ) )
$array[] = $row ;
return $array;
}
/**
* 獲取部分查詢結(jié)果
*
* @param Array 數(shù)組
* @return Array
*/
function get_query_result( $cols , $tb=null , $condition , $order=null , $limit=null , $start=0 ) {
if( empty($tb) ) $tb=$this-table;
else $this-table=$tb;
if( is_array($cols) ) $col="`".implode('`,`',$cols)."`";
else $col = $cols;
if( isset($limit) )
$sql.="select top $limit $col from $tb";
else
$sql = "select $col from $tb";
if( isset($condition) ) $sql.=" where $condition";
if( isset($order) ) $sql.=" order by $order";
if( isset($limit) ) $sql.=" limit $start,$limit";
return $this-get_result_rows($sql);
}
/**
* 執(zhí)行數(shù)據(jù)庫(kù)插入操作
*
* @param $arr values列表,數(shù)組索引為數(shù)據(jù)表字段
* @param $tb 操作數(shù)據(jù)表 如果為空則為設(shè)置的當(dāng)前類的操作表
*/
function insert_info( $arr , $tb = "" ) {
$cols = array_keys( $arr );
$values = array_values( $arr );
if (empty($tb)) $tb = $this-table;
/*
foreach( $arr as $key = $value ){
$cols[] = $key;
$values[] = $value;
}
*/
$sql = "insert into [$tb](`".implode("`,`",$cols)."`) values('".implode("','",$values)."')";
//return $sql;
return $this-get_result( $sql );
}
/**
* 執(zhí)行數(shù)據(jù)庫(kù)更新操作
*
* @param array $arr 要更新的字段值 數(shù)組索引為表字段名
* @param array $con 條件數(shù)組
* @param string $tb 要操作的數(shù)據(jù)表
*
*/
function update_info( $arr , $con , $tb = "" ) {
$cols = array();
$conditions = array();
if (empty( $tb )) $tb = $this-table;
if( is_array($arr) ) {
foreach( $arr as $key = $value ){
$cols[] = "`$key`='$value'";
}
foreach( $con as $key = $value ) {
//檢查數(shù)據(jù)類型
if( is_int($value) || is_float($value) )
$conditions[] = "`$key`=$value";
else
$conditions[] = "`$key`='$value'";
}
$sql = "update `$tb` set ".implode(",",$cols)." where ".implode(" and ",$conditions);
}
else
$sql = "update `$tb` set $arr where $con";
//return $sql;
return $this-get_result( $sql );
}
}
PHP連接數(shù)據(jù)庫(kù)之PHP連接MYSQL數(shù)據(jù)庫(kù)代碼
?php? ? $mysql_server_name= localhost ;? //改成自己的mysql數(shù)據(jù)庫(kù)服務(wù)器 ? $mysql_username= root ;? //改成自己的mysql數(shù)據(jù)庫(kù)用戶名 ? $mysql_password= ;? //改成自己的mysql數(shù)據(jù)庫(kù)密碼 ? $mysql_database= mycounter ; ?//改成自己的mysql數(shù)據(jù)庫(kù)名 ? $conn=mysql_connect($mysql_server_name $mysql_username $mysql_password $mysql_database);? ? $sql= CREATE?DATABASE?mycounter? DEFAULT?CHARACTER?SET?gbk?COLLATE?gbk_chinese_ci;? ? ;? ? mysql_query($sql);? ? $sql= CREATE?TABLE?`counter`? (`id`?INT( )?UNSIGNED?NOT?NULL? AUTO_INCREMENT? `count`?INT( )? UNSIGNED?NOT?NULL?DEFAULT? PRIMARY?KEY? (?`id`?)?)?TYPE?=?innodb; ;? ? mysql_select_db($mysql_database $conn);? ? $result=mysql_query($sql);? ? //echo?$sql;? ? mysql_close($conn);? ? echo?"Hello!數(shù)據(jù)庫(kù)mycounter已經(jīng)成功建立!";? ? ?
PHP連接數(shù)據(jù)庫(kù)之PHP連接ACCESS數(shù)據(jù)庫(kù)代碼方法
? ? $conn?=?new?("ADODB Connection");? ? $connstr?=?"DRIVER={Microsoft?Access?Driver?(* mdb)};?DBQ=" ?realpath("data/db mdb");? ? $conn Open($connstr);? ? $rs?=?new?("ADODB RecordSet");? ? $rs Open("select?*?from?szd_t" $conn );? ? while(!?$rs eof)?{? ? $f?=?$rs Fields( );? ? echo?$f value;? ? $rs MoveNext();? ? }? ? ?
PHP連接數(shù)據(jù)庫(kù)之PHP連接MS SQL數(shù)據(jù)庫(kù)代碼方法
安裝SQL服務(wù)器并添加PHP的MSSQL擴(kuò)展
使用以下代碼連接并測(cè)試
?php? ? $myServer?=?localhost;?//主機(jī) ? $myUser?=?sa;?//用戶名 ? $myPass?=?password;?//密碼 ? $myDB?=?Northwind;?//MSSQL庫(kù)名 ? $s?=?@mssql_connect($myServer ?$myUser ?$myPass)? ? or?die(Couldnt?connect?to?SQL?Server?on?$myServer);? ? $d?=?@mssql_select_db($myDB ?$s)? ? or?die(Couldnt?open?database?$myDB);? ? $query?=?SELECT?TitleOfCourtesy+?+FirstName+?+LastName?AS?Employee?;? ? $query? =?FROM?Employees?;? ? $query? =?WHERECountry=USA?AND?Left(HomePhone ? )?=?( );? ? $result?=?mssql_query($query);? ? $numRows?=?mssql_num_rows($result);? ? echo? h ? ?$numRows? ?Row? ?($numRows?==? ???:?s)? ?Returned?/ h ;? ? while($row?=?mssql_fetch_array($result))? ? {? ? echo? li? ?$row[Employee]? ? /li;? ? }? ? ?
PHP連接數(shù)據(jù)庫(kù)之PHP連接Oracle數(shù)據(jù)庫(kù)
PHP提供了兩套函數(shù)與Oracle連接 分別是ORA_和OCI函數(shù) 其中ORA_函數(shù)略顯陳舊 OCI函數(shù)更新?lián)f(shuō)更好一些 兩者的使用語(yǔ)法幾乎相差無(wú)幾 你的PHP安裝選項(xiàng)應(yīng)該可以支持兩者的使用
?? if?($conn=Ora_Logon("user@TNSNAME" "password"))? ? {?echo?"SUCCESS?!?Connected?to?databasen";? ? }else? ? {echo?"Failed?: (?Could?not?connect?to?databasen";}? ? Ora_Logoff($conn);? ? phpinfo();? ? ?? ? lishixinzhi/Article/program/PHP/201405/30761
一.安裝部署mongo
1.創(chuàng)建文件夾?
/opt/mongodb/single?
/opt/mongodb/data/db
2.進(jìn)入single目錄下載安裝包
//下載 tar.gz文件
wget
3.解壓 并修改文件名?
mv mongodb-linux-x86_64-2.4.6 mongo
4.進(jìn)入mongo目錄
5.創(chuàng)建配置文件?
– mkdir conf?
– cd conf?
– vim conf.properties
#端口
port=27017
#db存放的目錄
dbpath=/opt/mongotest/data/db
#后臺(tái)啟動(dòng)需要配置日志輸出
logpath=/opt/mongotest/single/mongo/log/mongo.log
#日志模式
logappend=true
#設(shè)置成后臺(tái)啟動(dòng)
fork=true
6.啟動(dòng)mongo?
mongo目錄執(zhí)行
root@chwx2:/opt/mongotest/single/mongo# ./bin/mongod -f conf/conf.properties
about to fork child process, waiting until server is ready for connections.
forked process: 4988
all output going to: /opt/mongotest/single/mongo/log/mongo.log
child process started successfully, parent exiting
表示后臺(tái)啟動(dòng)mongo成功
二.使用mongo進(jìn)行日常操作
1.連接mongodb?
mongo/bin目錄下執(zhí)行?
./mongo
2.查看數(shù)據(jù)庫(kù)?
show dbs
3.查看當(dāng)前所在數(shù)據(jù)庫(kù)?
db
4.創(chuàng)建數(shù)據(jù)庫(kù)?
use openfire (臨時(shí)創(chuàng)建 如果不做操作 則離開后被系統(tǒng)刪除)
5.在當(dāng)前數(shù)據(jù)庫(kù)刪除當(dāng)前數(shù)據(jù)庫(kù)?
db.dropDatabase()
6.查看當(dāng)前庫(kù)的所有用戶?
show users
7.查看集合(或者叫表)?
show collections
8.創(chuàng)建集合?
db.createCollection(“mycollection”)
9.創(chuàng)建集合并制定集合的屬性?
db.createCollection(“mycol”, { capped : true, autoIndexID : true, size : 6142800, max : 10000 } )
字段
類型
描述
capped ? ?Boolean ? ?(可選)如果為true,則啟用封頂集合。封頂集合是固定大小的集合,會(huì)自動(dòng)覆蓋最早的條目,當(dāng)它達(dá)到其最大大小。如果指定true,則需要也指定尺寸參數(shù)。 ?
autoIndexID ? ?Boolean ? ?(可選)如果為true,自動(dòng)創(chuàng)建索引_id字段的默認(rèn)值是false。 ?
size ? ?number ? ?(可選)指定最大大小字節(jié)封頂集合。如果封頂如果是 true,那么你還需要指定這個(gè)字段。 ?
max ? ?number ? ?(可選)指定封頂集合允許在文件的最大數(shù)量。 ?
10.另一種創(chuàng)建集合?
(當(dāng)插入一條數(shù)據(jù)時(shí),不存在mongodb會(huì)幫我們創(chuàng)建,和創(chuàng)建數(shù)據(jù)庫(kù)同理)?
db.MySecondCollection.insert({“name” : “ming”})
11.刪除當(dāng)前庫(kù)的一個(gè)集合?
db.CollectionName.drop()
12.插入一條數(shù)據(jù)?
db.MyFirstCollection.insert({“_id”:”3”,”title”:”mongotest”,”description”:”this is test”})?
注意:插入的都是JSON形式的,所以一定要用{},否則會(huì)報(bào)錯(cuò):?
Sat Mar 19 14:22:39.160 SyntaxError: Unexpected token :
13.插入一條_id存在的數(shù)據(jù)?
db.MyFirstCollection.insert({“_id”:”3”,”title”:”mm”})?
輸出:E11000 duplicate key error index: openfire.MyFirstCollection.$_id_ dup key: { : “3” }?
解釋:_id即是mongodb的默認(rèn)主鍵,默認(rèn)自動(dòng)生成,我們可以直接設(shè)置以達(dá)到我們想要的目的
問:插入一條和原來(lái)集合完全不一樣的數(shù)據(jù)可以嗎?
答:可以,所以我們要在程序中規(guī)避,手動(dòng)指定我們一個(gè)集合里面的字段,否則就無(wú)法實(shí)現(xiàn)查詢及其他功能了
db.MyFirstCollection.insert({"newTitle":"null"})
db.MyFirstCollection.find();
{ "_id" : "3", "title" : "new title", "description" : "this is test" }
{ "_id" : ObjectId("56ecf4fe0dceecace97c4506"), "newTitle" : "null" }
14.查看集合第一條記錄?
db.MySecondCollection.findOne();?
輸出:{ “_id” : ObjectId(“56ecde0662552d15c443dd4a”), “name” : “ming” }
15.查找一條/多條特定數(shù)據(jù)?
db.MySecondCollection.findOne({“name”:”ming”})?
輸出:{ “_id” : ObjectId(“56ecde0662552d15c443dd4a”), “name” : “ming” }
16.更新一條記錄?
db.MyFirstCollection.update({“title”:”mongotest”},{$set:{“title”:”new title”}},true,false)?
結(jié)果:?
db.MyFirstCollection.findOne()?
{ “_id” : “3”, “title” : “new title”, “description” : “this is test” }
update詳解
db.collection.update(criteria,objNew,upsert,multi)
criteria:查詢條件
objNew:update對(duì)象和一些更新操作符
upsert:如果不存在update的記錄,是否插入objNew這個(gè)新的文檔,true為插入,默認(rèn)為false,不插入。
multi:默認(rèn)是false,只更新找到的第一條記錄。如果為true,把按條件查詢出來(lái)的記錄全部更新。
更新操作符:
1.$inc
用法:{$inc:{field:value}}
作用:對(duì)一個(gè)數(shù)字字段的某個(gè)field增加value
示例:db.students.update({name:"student"},{$inc:{age:5}}) ?
2.$set
用法:{$set:{field:value}}
作用:把文檔中某個(gè)字段field的值設(shè)為value
示例:db.students.update({name:"student"},{$set:{age:23}})
3.$unset
用法:{$unset:{field:1}}
作用:刪除某個(gè)字段field
示例: db.students.update({name:"student"},{$unset:{age:1}})
4.$push
用法:{$push:{field:value}}
作用:把value追加到field里。注:field只能是數(shù)組類型,如果field不存在,會(huì)自動(dòng)插入一個(gè)數(shù)組類型
示例:db.students.update({name:"student"},{$push:{"title":"major"}}
5.$rename
用法:{$rename:{old_field_name:new_field_name}}
作用:對(duì)字段進(jìn)行重命名(不是值,是字段)
示例:db.students.update({name:"student"},{$rename:{"name":"newname"}})
設(shè)置用戶權(quán)限及訪問
1.給admin添加用戶
切換到admin庫(kù):use admin?
添加admin用戶:db.addUser(“root”,”admin”)
注意:必須先給admin庫(kù)添加用戶,否則就算給具體的庫(kù)添加了用戶,后續(xù)進(jìn)入依然能操作具體庫(kù).?
因?yàn)槟J(rèn)admin庫(kù)用戶具有最高權(quán)限,相當(dāng)于具體庫(kù)需要認(rèn)證時(shí),進(jìn)入的用戶持有的是admin的權(quán)限,所以無(wú)需認(rèn)證依然能進(jìn)行操作.
2.給具體庫(kù)添加用戶
use openfire
db.addUser("openfire","password")
3.重啟mongo并在啟動(dòng)時(shí)配置需要認(rèn)證
方法一:退出重啟并加上auth參數(shù)?
./bin/mongod -f conf/conf.properties –auth(注意是兩個(gè)-)
方法二:修改配置文件,加上參數(shù)(推薦)?
auth=true
3.測(cè)試權(quán)限
use openfire
db.MySecondCollection.findOne();
Sat Mar 19 14:04:55.653 error: {
"$err" : "not authorized for query on openfire.MySecondCollection",
"code" : 16550
} at src/mongo/shell/query.js:128
4.認(rèn)證并操作
//此處應(yīng)該設(shè)置成更加恰當(dāng)?shù)挠脩裘懊艽a
db.auth("openfire","password")
1
db.MySecondCollection.findOne()
{ "_id" : ObjectId("56ecde0662552d15c443dd4a"), "name" : "ming" }
5.另一種方法認(rèn)證
在進(jìn)入mongo時(shí)候加上數(shù)據(jù)庫(kù)及用戶名、密碼?
./bin/mongo openfire -uopenfire -ppassword
root@test:/opt/mongotest/single/mongo# ./bin/mongo openfire -uopenfire -ppassword
MongoDB shell version: 2.4.6
connecting to: openfire
db
openfire
db.MySecondCollection.findOne()
{ "_id" : ObjectId("56ecde0662552d15c443dd4a"), "name" : "ming" }
mongdb進(jìn)階
1.find()指定返回字段?
作用:減少流量
如果key:value,返回的value是個(gè)非常大的JSON,而我們不需要這么多字段,也許我們只需要其中的一個(gè).
那么使用projection來(lái)過濾:?
db.collection.find(query, projection) 此處projection就是返回值的過濾條件
參數(shù)
類型
描述
query ? ?文檔 ? ?可選. 使用查詢操作符指定查詢條件 ?
projection ? ?文檔 ? ?可選.使用投影操作符指定返回的鍵。查詢時(shí)返回文檔中所有鍵值, 只需省略該參數(shù)即可(默認(rèn)省略). ?
返回值: 匹配查詢條件的文檔集合的游標(biāo). 如果指定投影參數(shù),查詢出的文檔返回指定的鍵 ,”_id”鍵也可以從集合中移除掉。?
_id不指定的話,總是會(huì)返回.?
1或者true代表返回,0或者false代表不返回
示例:?
db.MyFirstCollection.findOne({“title”:”new title”},{“description”:1,”_id”:0});?
{ “description” : “this is test” }
也可以使用表達(dá)式:?
db.MyFirstCollection.findOne({“title”:”new title”},{Items:{“$slice”:[3,1]}});
引用:?