㈠ 谁给个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注入攻击。这些措施共同构成了一个立体的安全防护体系,为应用程序的数据库安全提供了强有力的保障。