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