先說一句:我寫的代碼沒用到網上的db類庫,那個類庫很強大,但是我實在是沒時間學了,我就寫我用的上的幾個小函數夠用就好。此代碼留作個人記錄。
所有代碼經過 新浪SAE平台調試通過
資料庫 表名 test 裡面有兩個欄位 id myName 這裡小提一句,所有的sql語句,就直接上phpMyAdmin裡面操作,然後就會出現sql語句代碼,直接粘過來,就基本都能用了。
下面附上 dbclass.php
<?phpclass dbclass{ public $link; //初始化資料連線 public function init() { $link = mysql_connect ( SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT, SAE_MYSQL_USER, SAE_MYSQL_PASS ) or die("error:".mysql_error()); mysql_select_db ( SAE_MYSQL_DB, $link ); mysql_set_charset("gbk"); } //關閉資料表 public function closetable($result) { mysql_free_result ( $result ); } //執行sql語句 得到數組 public function getsql($sql) { //$sql = "select id,myName from test"; return mysql_query ( $sql ); } //擷取一行資料 public function getrow($result) { return mysql_fetch_array ( $result, MYSQL_BOTH ); } }/* 自己改的資料連線方式require_once("dbclass.php");//先引入類庫$db = new dbclass();$db->init();$rows = $db->getsql("select id,myName from test");$row = $db->getrow($rows);echo $row["id"];$db->closetable($rows);*//* 百度來的資料連線方式 $link = mysql_connect ( SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT, SAE_MYSQL_USER, SAE_MYSQL_PASS ); if ($link) { mysql_select_db ( SAE_MYSQL_DB, $link ); mysql_set_charset("gbk"); $sql = "select id,myName from test"; $result = mysql_query ( $sql ); while ( $row = mysql_fetch_array ( $result, MYSQL_BOTH ) ) { echo ("<tr><td>$row[0]</td><td>$row[1]</td></tr>"); } mysql_free_result ( $result ); } else { echo "資料庫連接KO"; }*//* 自己改的帶列表的輸出require_once("dbclass.php");$db = new dbclass();$db->init();$rows = $db->getsql("select id,myName from test");while ( $row = $db->getrow($rows) ) { echo ($row['id'] . "-". $row[1] ."<br>");}$db->closetable($rows);*/?>
下面是test.php 裡面就是添刪改查的代碼了
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>無標題文檔</title></head><body><?php require_once("dbclass.php");$db = new dbclass();$db->init();//添加資料代碼if($_POST["do"] == "insert")$rows = $db->getsql("insert into test (id,myName) values (NULL,'".$_POST["myname"]."')");//修改資料代碼if($_POST["do"] == "modify")$rows = $db->getsql("UPDATE test SET myName = '".$_POST["myname"]."' WHERE id =".$_POST["id"]." LIMIT 1");//刪除資料代碼if($_POST["do"] == "del")$rows = $db->getsql("DELETE FROM test WHERE id = ".$_POST["id"]." LIMIT 1");//顯示資料代碼$rows = $db->getsql("select id,myName from test");echo "顯示列表<br><br>";while ( $row = $db->getrow($rows) ) { echo ($row['id'] . "-". $row[1] ."<br>");}$db->closetable($rows);?><p>添加資料</p><form id="form1" name="form1" method="post" action="">myname:<input name="myname" type="text" id="myname" /><input name="" type="submit" value="提交" /><input name="do" type="hidden" id="do" value="insert" /></form><p>修改資料</p><form id="form2" name="form2" method="post" action="">id:<input name="id" type="text" id="id" />myname:<input name="myname" type="text" id="myname" /><input name="" type="submit" value="提交" /><input name="do" type="hidden" id="do" value="modify" /></form><p>刪除資料</p><form id="form3" name="form3" method="post" action=""> id: <input name="id" type="text" id="id" /><input name="" type="submit" value="提交" /> <input name="do" type="hidden" id="do" value="del" /></form></body></html>
又加入了個繼承 第一次感覺到繼承原來這麼好使 太牛氣了,更新下類庫
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>無標題文檔</title></head><body><?php require_once("dbclass.php");$t = new testClass();//添加資料代碼if($_POST["do"] == "insert")$rows = $t->insert($_POST["myname"]);//修改資料代碼if($_POST["do"] == "modify")$rows = $t->modify($_POST["id"],$_POST["myname"]);//刪除資料代碼if($_POST["do"] == "del")$rows = $t->del($_POST["id"]);//顯示資料代碼$rows = $t->getAll();echo "顯示列表<br><br>";while ( $row = $t->getrow($rows) ) { echo ($row['id'] . "-". $row[1] ."<br>");}$t->closetable($rows);?><p>添加資料</p><form id="form1" name="form1" method="post" action="">myname:<input name="myname" type="text" id="myname" /><input name="" type="submit" value="提交" /><input name="do" type="hidden" id="do" value="insert" /></form><p>修改資料</p><form id="form2" name="form2" method="post" action="">id:<input name="id" type="text" id="id" />myname:<input name="myname" type="text" id="myname" /><input name="" type="submit" value="提交" /><input name="do" type="hidden" id="do" value="modify" /></form><p>刪除資料</p><form id="form3" name="form3" method="post" action=""> id: <input name="id" type="text" id="id" /><input name="" type="submit" value="提交" /> <input name="do" type="hidden" id="do" value="del" /></form></body></html>
<?phpclass dbclass{ public $link; //初始化資料連線 public function init() { $link = mysql_connect ( SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT, SAE_MYSQL_USER, SAE_MYSQL_PASS ) or die("error:".mysql_error()); mysql_select_db ( SAE_MYSQL_DB, $link ); mysql_set_charset("gbk"); } //關閉資料表 public function closetable($result) { mysql_free_result ( $result ); } //執行sql語句 得到數組 public function getsql($sql) { //$sql = "select id,myName from test"; return mysql_query ( $sql ); } //擷取一行資料 public function getrow($result) { return mysql_fetch_array ( $result, MYSQL_BOTH ); } }class testClass extends dbclass{ //建構函式 function __construct() { //parent::printName(); 通過parent關鍵字調用父類的方法,跟C#的base一樣(但它調用的是子類的屬性) parent::init(); } function getAll() { return parent::getsql("select id,myName from test"); } function insert($myName) { parent::getsql("insert into test (id,myName) values (NULL,'".$myName."')"); } function modify($id,$myName) { parent::getsql("UPDATE test SET myName = '".$myName."' WHERE id =".$id." LIMIT 1"); } function del($id) { parent::getsql("DELETE FROM test WHERE id = ".$id." LIMIT 1"); }}/* 自己改的資料連線方式require_once("dbclass.php");//先引入類庫$db = new dbclass();$db->init();$rows = $db->getsql("select id,myName from test");$row = $db->getrow($rows);echo $row["id"];$db->closetable($rows);*//* 百度來的資料連線方式 $link = mysql_connect ( SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT, SAE_MYSQL_USER, SAE_MYSQL_PASS ); if ($link) { mysql_select_db ( SAE_MYSQL_DB, $link ); mysql_set_charset("gbk"); $sql = "select id,myName from test"; $result = mysql_query ( $sql ); while ( $row = mysql_fetch_array ( $result, MYSQL_BOTH ) ) { echo ("<tr><td>$row[0]</td><td>$row[1]</td></tr>"); } mysql_free_result ( $result ); } else { echo "資料庫連接KO"; }*//* 自己改的帶列表的輸出require_once("dbclass.php");$db = new dbclass();$db->init();$rows = $db->getsql("select id,myName from test");while ( $row = $db->getrow($rows) ) { echo ($row['id'] . "-". $row[1] ."<br>");}$db->closetable($rows);*/?>
現在再用testClass產生對象的時候 就完全看不見sql語句了。
-------------------------------
<?php ?> php內建環境
echo() 輸出函數
strpos() 函數 尋找一個字串在另外一個字串裡是否存在
$_POST['name'] 擷取一個post的變數
$_GET['id'] 擷取一個get的變數
// /* */ # 備註陳述式
$ 變數名前面都要加的一個yd符號
gettype($a_str) 查看某一個變數的類型
is_int() is_string() 等等是查看是否是某個變數類型
settype($bar, "string"); 強制轉換變數類型
== 雙等號是判定是否相等
var_dump() 列印變數的相關資訊
. 字串串連符
& 引用賦值 例如 $foo = 'Bob';$bar = &$foo; 這樣就是地址引用賦值
global 全域變數定義符 php預設內部變數和外部變數絕交啊 除非重新定義
static $a = 0; 靜態變數賦值 第一次定義後就不會再定義了
$$ 可變變數 差不多相當引用 例 $a='hello'; $$a='work';//等同 $hello='work';
${$a[1]} 可變變數當遇到數組的時候 需要{}包含確保準確性
$_SERVER['PHP_SELF']; 自身頁面地址
$_COOKIE['count'] 讀取cookie
setcookie('count', $count, time()+3600); 寫入cookie
const CONSTANT = 'Hello World'; 定義常量
__LINE__ __FILE__ __DIR__ __FUNCTION__ __CLASS__ __METHOD__ __NAMESPACE__ 魔術常量
.= 用於字串拼接
看到 php5.3參考手冊 語言參考->類與對象