㈠ 誰給個php操作mysql類並有詳細使用說明或例子
下面這個,是針對php5的一個簡單資料庫封裝類,適合學習,其他的如刪除、更新等操作,你可以自己加上:
<?php
class Mysql{ //首先定義一個類,首寫字母大寫
public $host;//伺服器名,訪問修飾符PUBLIC證明$host是一個公共的屬情在類的內部外部都可訪問,可以被繼承
public $user;//用戶名,是公共的屬性
private $pass;//密碼,問修飾符private證明$pass是私有的.只能在類的內部使用且不能被繼承.
public $dbname;//資料庫名,也是公共的屬性.
//__construct聲名這是一個造函數,定義一些初始的信息.有三個參數
public function __construct($host,$user,$pass,$dbname){
$this->host = $host;
$this->user = $user;
$this->pass = $pass;
$this->dbname = $dbname;
$link = @mysql_connect($this->host,$this->user,$this->pass)
or die("error");
@mysql_select_db($this->dbname,$link)
or die("error2");
}
//定義資料庫的查尋和顯示函數
function myQuery($sql){
$result = mysql_query($sql);
if(!$result){
echo "error3";
exit;
}
$num = mysql_num_rows($result);
if($num){
echo "NO".$num;
}
while($row = mysql_fetch_assoc($result)){
echo '<tr><td bgcolor="#fffddd"><pre>'.htmlspecialchars(stripslashes($row['body']))."<pre></td></tr>";
}
}
}
$rutt = new Mysql('localhost','root','ssss','calvin');//實例化一個類...記住這里的參數是和構造函數的參數一樣的...
$rutt->myQuery('select * from calvin_body');//運行資料庫查尋並顯示的函數..
?>
下面這個是針對php5以下版本的資料庫封裝類,體現了php類的繼承,一個許願版程序的:
<?php
/*
* FileName: DatabaseSQL.inc.php
* Author: Terry
* Function: 建立DatabaseSQL對象,實現對資料庫的基本操作
* Version : Blue-System v2.0
* CreateDate: 2004-03-10
* Copyright: Blue-Workshop / http://www.blue4me.net
*/
// 定義DatabaseSQL對象
Class DatabaseSQL
{
var $CONN = ""; // 連接號
var $HOST = "Localhost"; // 主機名
var $USER = ""; // 用戶名
var $PASSWORD = ""; // 密碼
// DatabaseSQL類的構造函數
function DatabaseSQL($DBNAME)
{
$user = $this -> USER;
$password = $this -> PASSWORD;
$host = $this -> HOST;
$db = $DBNAME;
// 連接資料庫
$conn = mysql_connect($host, $user, $password);
mysql_select_db($db, $conn);
$this -> CONN = $conn;
return true;
}
// 定義查詢操作
function select($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this -> CONN) ) return false;
$conn = $this -> CONN;
// 發送SQL語句,獲得結果
$result = mysql_query($strSQL, $conn);
if ( (!$result) or (empty($result)) ) {
return false;
}
$num = 0;
$data = array();
// 將查詢結果放二維數組中
while ( $row = mysql_fetch_array($result) ) {
$data[$num] = $row;
$num++;
}
mysql_free_result($result);
return $data;
}
// 定義插入操作
function insert($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this -> CONN) ) return false;
$conn = $this -> CONN;
// 發送SQL語句,插入新數據
$result = mysql_query($strSQL, $conn);
if ( !result ) return false;
// 獲得記錄的id號
$result = mysql_insert_id();
return $result;
}
// 定義更新操作
function update($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this -> CONN) ) return false;
$conn = $this -> CONN;
// 發送SQL語句,更新資料庫
$result = mysql_query($strSQL, $conn);
return $result;
}
// 定義刪除操作
function delete($strSQL = "")
{
if ( empty($strSQL) ) return false;
if ( empty($this -> CONN) ) return false;
$conn = $this -> CONN;
// 發送SQL語句,刪除記錄
$result = mysql_query($strSQL, $conn);
return $result;
}
}
?>
----------------------------------
<?php
/*
* FileName: Wish.inc.php
* Author: Terry
* Function: 建立Wish對象,實現對許願板進行操作功能
* Version : Blue-System v2.0
* CreateDate: 2004-03-10
* Copyright: Blue-Workshop / http://www.blue4me.net
*/
require "config.inc.php";
require "DatabaseSQL.inc.php";
// 定義Wish對象
Class Wish extends DatabaseSQL
{
// 構造函數
function Wish()
{
$DBName = $GLOBALS["dbname"];
$this -> DatabaseSQL($DBName);
}
// 添加新願望(use in wish/save.php?action=add_wish)
function AddWish($name,$receiver,$type,$address,$content,$hide,$addtime)
{
$strSQL = "insert into Wish (Name, Receiver, Type, Address, Content, Hide, AddTime) values ('$name', '$receiver', '$type', '$address', '$content', '$hide', '$addtime')";
$result = $this -> insert($strSQL);
return $result;
}
// 修改指定id的願望內容(use in save.php?action=edit_wish)
function EditWish($wid,$name,$receiver,$type,$address,$content,$hide)
{
$strSQL = "update `Wish` set `Name` = '$name', `Receiver` = '$receiver', `Type` = '$type', `Address` = '$address', `Content` = '$content', `Hide` = '$hide' where `WID` = '$wid' ";
$result = $this -> update($strSQL);
return $result;
}
// 願望列表(use in index.php)
function ListWish($startid,$list_nums)
{
$strSQL = "select * from Wish order by AddTime desc LIMIT $startid,$list_nums";
$result = $this -> select($strSQL);
return $result;
}
// 獲取指定願望信息(use in index.php?go=view_wish)
function GetWish($wid)
{
$strSQL = "select * from Wish where WID = '$wid'";
$result = $this -> select($strSQL);
return $result;
}
// 更新指定願望的瀏覽數(use in index.php?go=view_wish)
function UpdateHit($wid)
{
$strSQL = "update `Wish` set `Hit` = ( `Hit` + 1 ) where `WID` = '$wid'";
$result = $this -> update($strSQL);
return $result;
}
// 刪除指定願望信息(use in save.php?action=del_wish)
function DelWish($wid)
{
$strSQL = "delete from Wish where WID = '$wid'";
$result = $this -> delete($strSQL);
return $result;
}
}
?>
---------------------------------------
<?php
/*
* FileName: config.inc.php
* Author: Terry
* Function: 系統基本設置
* Version : B.S - Wish v1.0
* CreateDate: 2004-03-19
* Copyright: Blue-Workshop
* Tec-Support: http://www.blue4me.net / http://feeltouch.8u8.com
* Attention: 請保留版權信息,謝謝 ^_^
*/
// 資料庫信息
$dbhost = "Localhost"; /* 主機名 */
$dbuser = ""; /* 資料庫用戶 */
$dbpwd = ""; /* 資料庫密碼 */
$dbname = "BS_Wish"; /* 資料庫名 */
// 管理員信息
$adminname = "blue"; /* 初始化管理員 */
$adminpwd = "blue"; /* 初始化管理密碼 */
?>
㈡ php 在操作資料庫的時候大多數是寫sql還是orm
大多都是寫sql的,但是不是直接寫sql,而是封裝過的sql類,幫你解決了一些xss和注入,類似於
$this->sqldb->select("*")->from("user")->where("id","1")->do();
//select*from`user`where`id`="1";
php也有orm框架,sql簡單的比較好弄,復雜的就不行了。
orm其實就是降低靈活性,增加方便簡便的特性。
眾所周知,簡便與靈活是不可以並存的。
由於orm隱藏了一層,那層如果發生了什麼特殊的事情不好調試,所以其實復雜的項目,並不適合orm,靈活性才是王道,但是又不能直接寫sql吧,太容易出問題,所以就有了上面那種方式。
㈢ 澶у﹀氨紱諱笉寮鐨6涓灝佺炵綉絝
鐭ラ亾浜嗗氨紱諱笉寮鐨勫嚑涓灝佺炵綉絝!
Papers With Code
娑夊強鍖呮嫭璁$畻鏈鴻嗚夈佽嚜鐒惰璦銆佸己鍖栧︿範銆佸浘璁虹瓑Al 棰嗗煙鐩稿叧鐨勬渶浼樿烘枃鍜屼唬鐮侊紝閲岄潰鍖呭惈浜966涓鏈哄櫒瀛︿範浠誨姟銆515涓璇勪及鎺掕屾(浠ュ強褰撳墠鏈浼樼粨鏋)銆8625鍋忚烘枃(甯︽簮鐮)銆704涓鏁版嵁闆
鑿滈笩鏁欑▼
鎴戜釜浜哄己鐑堟帹鑽愮紪紼嬭璦銆佸伐鍏峰垵瀛﹁呬嬌鐢ㄨ繖涓緗戠珯錛屾秹鍙奝ython銆乯s銆乸hp銆乻ql絳夛紝 浜ら氭潯鐞嗘竻鏅般佺悊璁轟笌瀹炰緥鐩哥粨鍚堬紝瀵逛簬瑕佸︿範鍏ラ棬鏌愰」緙栫▼璇璦鐨勫悓瀛︽槸涓涓闈炲父瀹炵敤鐨勭綉絝
Stack Overflow
鍦ㄥ紑鍙戝︿範鎴栧伐浣滆繃紼嬩腑錛岄毦鍏嶄細閬囧埌榪欐牱鎴栭偅鏍風殑bug錛 闇瑕佹眰鍔╀竴涓紺懼尯鎴栬哄潧錛 浣嗘槸錛 涓涓嶅皬蹇冨氨浼氳俯鍒板緢澶氬潙錛 鍦ㄤ嬌鐢ㄨ繃紼嬩腑錛 鎴戣夊緱Stack Overflow鏄涓涓闈炲父涓嶉敊鐨勭綉絝欙紝 鍏充簬緙栫▼錛 灝ゅ叾鏄疨ython鐩稿叧鐨勫緢澶氶棶棰橀兘鍙浠ユ壘鍒拌В鍐蟲柟妗堬紝鑰屼笖闈炲父闈犺氨錛岃兘澶熷噺灝戣蛋寰堝氬集璺錛岃妭鐪佸緢澶氭椂闂
鉶閮ㄨ惤蹇鎼
灝卞傚悓緗戠珯鐨勫畻鏃ㄦ墍璇粹滆╂悳緔㈡洿綆鍗曗濓紝鉶閮ㄨ惤鐨勭『鍋氬埌浜嗭紝闆嗗悎浜嗗揩鎼溿佸︽湳鎼滅儲銆佽捐℃悳緔銆佽祫婧愭悳緔㈠嚑澶фā鍧楋紝鎼滅儲鍔熻兘娑電洊璋鋒瓕銆佺櫨搴︺佸繀搴斻佺綉鐩樸佹柊嫻絳夌瓑
楦犳懇鎼滀功
涓板瘜鐨勪腑鑻辨枃鐢靛瓙涔﹁祫婧愶紝榪樺寘鍚涓浜涘皬璇縐嶇殑鐢靛瓙涔︼紝鍠滄㈢敤鎵嬫満鎴栧鉤鏉跨湅鐢靛瓙涔︾殑鍙浠ュ湪楦犳懇鎼滀功涓婃悳緔㈠埌澶ч噺鏉ヨ嚜緗戝弸涓婁紶鐨勭櫨搴︿簯銆佸井鐩樼瓑騫沖彴鐨勭數瀛愪功璧勬簮
闀濇暟鎹
鑱氬悎浜嗗叏鐞8000澶氬舵潈濞佹暟鎹鍙戝竷鏈烘瀯鐨勬暟鎹錛屽唴瀹規兜鐩栦簡紺句細浜掕仈緗戜笌閫氫俊銆佺粡嫻庝笌鍟嗕笟絳12涓澶х被銆100+涓鍨傜洿琛屼笟錛岀浉褰撲竴閮ㄥ垎涓哄厤璐逛笅杞姐傝幏鍙栨暟鎹鍙鍒閿欒繃~榪樻湁瓚呭ソ鐢ㄥ彲瑙嗗寲宸ュ叿闀愭暟鍥捐〃錛屾惌閰嶄嬌鐢ㄦ潬鏉犵殑!
㈣ 在thinkphp框架中如何防止sql注入
在ThinkPHP框架中,防止SQL注入的關鍵在於使用參數綁定和查詢構造器,避免直接將用戶輸入拼接到SQL語句中。
首先,ThinkPHP提供了強大的資料庫操作類,其中包含了各種資料庫操作方法。當使用這些方法時,框架會自動對輸入的數據進行轉義處理,從而降低SQL注入的風險。但更為推薦的做法是使用參數綁定。參數綁定能夠確保傳遞給SQL語句的數據與命令分開,這樣即使數據中包含惡意代碼,也不會被資料庫執行。在ThinkPHP中,可以通過預處理語句或者查詢構造器的方式來實現參數綁定。
其次,查詢構造器是ThinkPHP中另一個重要的防SQL注入工具。查詢構造器提供了一種鏈式調用的方式來構建SQL語句,它內部會自動處理數據的轉義和拼接,用戶無需直接編寫SQL語句。這種方式不僅代碼更加簡潔易讀,而且能夠大大減少因手動拼接SQL而產生的注入漏洞。例如,使用where方法來設置查詢條件,而不是直接將條件拼接到SQL語句中。
最後,除了上述的技術手段外,還需要結合一些開發規范來共同防範SQL注入。例如,對用戶輸入進行嚴格的驗證和過濾,確保只有符合預期的數據才能被處理;定期更新和維護系統以及依賴的庫,以修復已知的安全漏洞;對資料庫進行最小許可權原則的配置,限制攻擊者潛在的利用空間。
綜上所述,ThinkPHP框架通過參數綁定、查詢構造器以及結合開發規范等多重手段,可以有效地防止SQL注入攻擊。這些措施共同構成了一個立體的安全防護體系,為應用程序的資料庫安全提供了強有力的保障。