什么教數(shù)據(jù)全部歸0
創(chuàng)新互聯(lián)建站是一家專業(yè)提供巴東企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站制作、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為巴東眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
我們假設(shè)數(shù)據(jù)庫(kù)中有三張表。
a,b,c,每個(gè)表有幾個(gè)字段,也有很多數(shù)據(jù),
那么你的問(wèn)題到底是如下哪種
1:刪除掉該數(shù)據(jù)庫(kù)中的所有表,a,b,c
2:把所有表的數(shù)據(jù)都清空,表結(jié)構(gòu)保留
3:把表中所有的數(shù)據(jù)都變?yōu)檎螖?shù)值0?
補(bǔ)充1:
如果你是3的問(wèn)題的話,實(shí)現(xiàn)起來(lái)比較繁瑣,并且我也不是很理解為什么要這樣做,感覺(jué)挺沒(méi)什么意義的,如果方便的話可以告訴我你的目的是什么,為什么要把所有的數(shù)據(jù)都變成0,或許可以換些辦法
補(bǔ)充2:
聽(tīng)你的描述你可能是只有一個(gè)表,表中有很多的字段,每個(gè)字段都代表一個(gè)投票項(xiàng)目,而表中的數(shù)據(jù)記錄,其實(shí)只有一條?
你可以通過(guò)pg_num_fields獲得字段數(shù)量,在通過(guò)pg_field_name獲得字段名稱,依次運(yùn)行update
$dbconn = pg_connect("host=localhost");
$res = pg_query($dbconn, "select * from your_talbe_name");
$i = pg_num_fields($res);
for ($j = 0; $j $i; $j++) {
$fieldname = pg_field_name($res, $j);
pg_query($dbconn, "update your_talbe_name set $fieldname=0");
}
另外,我個(gè)人認(rèn)為你這樣實(shí)現(xiàn)投票的管理不是很好,投票項(xiàng)目一多很難管理,建議
create table xxx
(
id serial primary key,
name text,
num int
)
把投票項(xiàng)目的名字也就是你原來(lái)列的名稱放到name字段中,num則為投票數(shù),這樣以后再有這種問(wèn)題,一個(gè)update xxx set num=0就OK了,管理起來(lái)也方便些。
連接數(shù)據(jù)庫(kù) ThinkPHP內(nèi)置了抽象數(shù)據(jù)庫(kù)訪問(wèn)層,把不同的數(shù)據(jù)庫(kù)操作封裝起來(lái),我們只需要使用公共的Db類進(jìn)行操作,而無(wú)需針對(duì)不同的數(shù)據(jù)庫(kù)寫(xiě)不同的代碼和底層實(shí)現(xiàn),Db類會(huì)自動(dòng)調(diào)用相應(yīng)的數(shù)據(jù)庫(kù)適配器來(lái)處理。目前的數(shù)據(jù)庫(kù)包括Mysql、MsSQL、PgSQL、Sqlite、Oracle、Ibase以及PDO的支持,如果應(yīng)用需要使用數(shù)據(jù)庫(kù),必須配置數(shù)據(jù)庫(kù)連接信息,數(shù)據(jù)庫(kù)的配置文件有多種定義方式:
第一種 在項(xiàng)目配置文件里面定義
return array(
'DB_TYPE'= 'mysql',
'DB_HOST'= 'localhost',
'DB_NAME'='thinkphp',
'DB_USER'='root',
'DB_PWD'='',
'DB_PORT'='3306',
'DB_PREFIX'='think_',
// 其他項(xiàng)目配置參數(shù)………
);
系統(tǒng)推薦使用該種方式,因?yàn)橐话阋粋€(gè)項(xiàng)目的數(shù)據(jù)庫(kù)訪問(wèn)配置是相同的。該方法系統(tǒng)在連接數(shù)據(jù)庫(kù)的時(shí)候會(huì)自動(dòng)獲取,無(wú)需手動(dòng)連接。
可以對(duì)每個(gè)項(xiàng)目定義不同的數(shù)據(jù)庫(kù)連接信息,還可以在調(diào)試配置文件(Conf/debug.php)里面定義調(diào)試數(shù)據(jù)庫(kù)的配置信息,如果在項(xiàng)目配置文件和調(diào)試模式配置文件里面同時(shí)定義了數(shù)據(jù)庫(kù)連接信息,那么在調(diào)試模式下面后者生效,部署模式下面前者生效。
第二種 使用DSN方式在初始化Db類的時(shí)候傳參數(shù)
$db_dsn = “mysql://username:passwd@localhost:3306/DbName”;
$db = new Db($db_dsn);
該方式主要用于在控制器里面自己手動(dòng)連接數(shù)據(jù)庫(kù)的情況,或者用于創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)連接。
第三種 使用數(shù)組傳參數(shù)
$DSN = array(
'dbms' = 'mysql',
'username' = 'username',
'password' = 'password',
'hostname' = ; 'localhost',
'hostport' = '3306',
'database' = 'dbname'
);
$db = new Db($DSN);
該方式也是用于手動(dòng)連接數(shù)據(jù)庫(kù)的情況,或者用于創(chuàng)建多個(gè)數(shù)據(jù)庫(kù)連接。
第四種 在模型類里面定義
protected $connection = array(
'dbms' = 'mysql',
'username' = 'username',
'password' = 'password',
'hostname' = 'localhost',
'hostport' = '3306',
'database' = 'dbname'
);
// 或者使用下面的定義
protected $connection = ”mysql://username:passwd@localhost:3306/DbName”;
如果在某個(gè)模型類里面定義了connection屬性,則在實(shí)例化模型對(duì)象的時(shí)候,會(huì)使用該數(shù)據(jù)庫(kù)連接信息進(jìn)行數(shù)據(jù)庫(kù)連接。通常用于某些數(shù)據(jù)表位于當(dāng)前數(shù)據(jù)庫(kù)連接之外的其它數(shù)據(jù)庫(kù)。
ThinkPHP并不是在一開(kāi)始就會(huì)連接數(shù)據(jù)庫(kù),而是在有數(shù)據(jù)查詢操作的時(shí)候才會(huì)去連接數(shù)據(jù)庫(kù)。額外的情況是,在系統(tǒng)第一次操作模型的時(shí)候,框架會(huì)自動(dòng)連接數(shù)據(jù)庫(kù)獲取相關(guān)模型類的數(shù)據(jù)字段信息,并緩存下來(lái)。
(字段緩存目錄:Runtime/Data/_fields)
ThinkPHP支持PDO方式,如果要使用PDO方式連接數(shù)據(jù)庫(kù),可以參考下面的設(shè)置。
我們以項(xiàng)目配置文件定義為例來(lái)說(shuō)明:
return array(
'DB_TYPE'= 'pdo',
// 注意DSN的配置針對(duì)不同的數(shù)據(jù)庫(kù)有所區(qū)別 請(qǐng)參考PHP手冊(cè)PDO類庫(kù)部分
'DB_DSN'= 'mysql:host=localhost;dbname=think',
'DB_USER'='root',
'DB_PWD'='',
'DB_PREFIX'='think_',
// 其他項(xiàng)目配置參數(shù)………
);
使用PDO方式的時(shí)候,要注意檢查是否開(kāi)啟相關(guān)的PDO模塊。DB_DSN參數(shù)僅對(duì)PDO方式連接才有效。
初學(xué)postgresql,想安裝一個(gè)在本機(jī)測(cè)試一下,環(huán)境為windows xp + apache2 + php5(5.2.6) + postgresql8.4.一切安裝正常,但是再裝上phppgadmin測(cè)試時(shí),顯示“您的 PHP 中沒(méi)有完整的數(shù)據(jù)庫(kù)支持”。apache錯(cuò)誤日志為“PHP Warning: PHP Startup: Unable to load dynamic library 'C:/php/ext/php_pgsql.dll'”。多次在網(wǎng)上搜索解決方法,已完成以下操作: 1、修改php.ini 2、確認(rèn)C:\php\ext\下php_pgsql.dll存在 3、修改path環(huán)境變量,添加了postgresql的bin目錄 4、將libpg.dll放至windows\system32下 5、重啟apache多次 不好意思,僅有的一點(diǎn)積分已經(jīng)用光了,所以只好請(qǐng)大家多多支持了。 cmd下,cd到php所在目錄,之后在cmd下運(yùn)行 php 看提示吧,卻啥lib它會(huì)提示你,需要啥去pgsql下cpoy到windows\system32下,你只復(fù)制一個(gè)libpg.dll是不夠的,好象復(fù)制好多個(gè)
貼出自己寫(xiě)的一個(gè)數(shù)據(jù)庫(kù)類吧。
class.php
?php
class Db_Base
{
var $db_host;
var $db_name;
var $db_user;
var $password;
var $linkID;
var $sql;
var $result;
//構(gòu)造函數(shù),其中dbname,dbuser,dbpsd填自己的數(shù)據(jù)名,用戶名,密碼
function __construct()
{
$this-linkID = 0;
$this-sql = "";
$this-db_name="dbname";
$this-db_user="dbuser";
$this-password="dbpsd";
$this-db_host="localhost";
//調(diào)用數(shù)據(jù)庫(kù)鏈接函數(shù)
$this-Db_Connect();
}
function Db_Base()
{
$this-__construct();
}
//鏈接數(shù)據(jù)庫(kù)函數(shù)
function Db_Connect()
{
$this-linkID=@mysql_connect($this-db_host,$this-db_user,$this-password);
if(!$this-linkID)
{
DisplayError("連接失敗");exit();
}
$this-Db_Select();
return true;
}
//選擇數(shù)據(jù)庫(kù)函數(shù)
function Db_Select()
{
$select=mysql_select_db($this-db_name);
if(!$select)
{
DisplayError("選擇數(shù)據(jù)庫(kù)失敗");exit();
}
}
//sql語(yǔ)句操作
function Db_Query($sql)
{
if($sql) $this-sql=$sql;
if(!($this-result=mysql_query($this-sql,$this-linkID)))
{
DisplayError("SQL無(wú)效");
return 0;
}
else
{
return $this-result;
}
}
//sql語(yǔ)句的結(jié)果用數(shù)組返回
function Db_Fetch_Array()
{
return mysql_fetch_array($this-result);
}
//select語(yǔ)句 影響的行數(shù)
function Db_Num_Rows()
{
return mysql_num_rows($this-result);
}
//INSERT、UPDATE 、DELETE 的影響行數(shù)
function Db_Affected_Rows()
{
return mysql_affected_rows();
}
//清除記錄
function Db_Free_Result()
{
if(!is_array($this-result)) return "";
foreach($this-result as $kk = $vv)
{
if($vv) @mysql_free_result($vv);
}
}
?
其中DisplayError 為外部定義函數(shù)
應(yīng)用的話,如下操作
example.php
?php
require_once(class.php);
$news=new Db_Base();//構(gòu)建對(duì)象
$sql="select * from tableA limit 0,100";//初始化sql語(yǔ)句
$news-Db_Query($sql);//向數(shù)據(jù)庫(kù)插入sql語(yǔ)句
while($re=$news-Db_Fetch_Array())//循環(huán)輸出sql結(jié)果集
{
echo $re[keyA];
echo $re[keyB];//keyA,keyB為你數(shù)據(jù)表的鍵
}
echo $news-Db_Num_Rows();//輸出本次sql語(yǔ)句影響的行數(shù),假若sql語(yǔ)句是update,delete,insert的,則用 Db_Affected_Rows() 函數(shù)
$news-Db_Free_Result();//清空查詢結(jié)果
?
好吧,百度的這個(gè)表單輸入框真爛,不能調(diào)格式,代碼格式可能很亂,就麻煩樓主慢慢看吧。若有問(wèn)題再發(fā)消息給我百度號(hào)。
分享標(biāo)題:php對(duì)pg數(shù)據(jù)庫(kù)操作類 php對(duì)數(shù)據(jù)庫(kù)的操作
轉(zhuǎn)載來(lái)源:http://newbst.com/article44/doihche.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、建站公司、商城網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、App設(shè)計(jì)、全網(wǎng)營(yíng)銷(xiāo)推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)