一些關於PHP的知識

來源:互聯網
上載者:User

1、如何配置PhpMyAdmin2.9
網路上很多教程的設定檔是針對PhpMyAdmin底版本的,一開始連2.9設定檔都不知道放哪裡?
設定檔相對位址是:config.sample.inc.php (不是這個libraries/config.default.inc.php)

2、讓phpMyAdmin使用密碼登陸
在設定config.inc.php設定以下參數:
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['blowfish_secret'] = '123456'; // 隨便設定一個非Null 字元串
$cfg['DefaultLang'] = 'zh'; // 預設顯示中文,可選

3、沒有發現 PHP 的擴充設定mbstring, 而當前系統好像在使用寬字元集。沒有 mbstring....修改php.ini 檔案extension=php_mbsting.dll 要重起才會生效!

4、php讀取mysql資料庫中文字元的時候全部顯示問號?
在查詢資料庫之前,先使用mysql_query("set names 'gb2312'");

5、用PHP輸出靜態頁面

有2種

一種是利用模板技術,另一種是用ob系列函數。兩種方法,看起來都差不多,但是實際上,卻是不同的。

第一種:利用模板

目前PHP的模板可以說是很多了,有功能強大的smarty,還有簡單易用的smarttemplate等。

它們每一種模板,都有一個擷取輸出內容的函數。

我們產生靜態頁面的方法,就是利用了這個函數。

用這個方法的優點是,代碼比較清晰,可讀性好。

這裡我用smarty做例子,說明如何產生靜態頁

<?php
require('smarty/Smarty.class.php');
$t = new Smarty;
$t->assign("title","Hello World!");
$content = $t->fetch("templates/index.htm");
//這裡的 fetch() 就是擷取輸出內容的函數,現在$content變數裡面,就是要顯示的內容了
$fp = fopen("archives/2005/05/19/0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?>

第二種方法:利用ob系列的函數

這裡用到的函數主要是 ob_start(), ob_end_flush(), ob_get_content(),

其中ob_start()是開啟瀏覽器緩衝區的意思,

開啟緩衝後,所有來自PHP程式的非檔案頭資訊均不會發送,

而是儲存在內部緩衝區,直到你使用了ob_end_flush().

而這裡最重要的一個函數,就是ob_get_contents(),

這個函數的作用是擷取緩衝區的內容,相當於上面的那個fetch(),

道理一樣的。代碼:

<?php
ob_start();
echo "Hello World!";
$content = ob_get_contents();//取得php頁面輸出的全部內容
$fp = fopen("0001.html", "w");
fwrite($fp, $content);
fclose($fp);
?>
6、PHP語言讀取資料庫詳解
這段代碼的功能是:

串連到一個 url 地址為localhost 、 連接埠為 3306 的mysql伺服器上。mysql伺服器的帳號是"root",密碼是"9999"。mysql 伺服器上有一個資料庫 ok , 資料庫裡有一個表 abc。表 abc 一共為兩列,列名分別是 "id" 和 "name" ,將 abc 裡的所有資料讀出來。

<?

$dbh = @mysql_connect("localhost:3306","root","9999");

/* 定義變數dbh , mysql_connect()函數的意思是串連mysql資料庫, "@"的意思是屏蔽報錯 */

if(!$dbh){die("error");}

/* die()函數的意思是將括弧裡的字串送到瀏覽器並中斷PHP程式 (Script)。括弧裡的參數為欲送出的字串。 */

@mysql_select_db("ok", $dbh);

/* 選擇mysql伺服器裡的一個資料庫,這裡選的資料庫名為 ok */

$q = "Select * FROM abc";

/* 定義變數q, "Select * FROM abc"是一個SQL語句,意思是讀取表abc中的資料 */

?>

<br />
<!--========= 方法一 =========-->
<br />

<?

$rs = mysql_query($q, $dbh);

/* 定義變數 rs ,函數mysql_query()的意思是:送出 query 字串供 MySQL 做相關的處理或者執行.由於php是從右往左執行的,所以,rs的值是伺服器運行mysql_query()函數後返回的值 */

if(!$rs){die("Valid result!");}

echo "<table>";

echo "<tr><td>ID</td><td>Name</td></tr>";

while($row = mysql_fetch_row($rs)) echo "<tr><td>$row[0]</td><td>$row[1]</td></tr>";

/* 定義量變(數組)row,並利用while迴圈,把資料一一寫出來.
函數mysql_fetch_row()的意思是:將查詢結果$rs單列拆到陣列變數中.
$row[0] 和 $row[1] 的位置可以換*/

echo "</table>";

?>

<br />
<!--========= 方法二 =========-->
<br />

<?

$rs = mysql_query($q, $dbh);

while($row = mysql_fetch_object($rs)) echo "$row->id $row->name <br />";

/* id和name可以換位置 */

?>

<br />
<!--========= 方法三 =========-->
<br />

<?

$rs = mysql_query($q, $dbh);

while($row = mysql_fetch_array($rs)) echo "$row[id] $row[name] <br />";

/* id和name可以換位置 */

?>

<!--========= 方法三最快 =========-->

<?

@mysql_close($dbh);

/* 關閉到mysql資料庫的串連 */

?>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.