PHP與MySQL互動使用詳解

來源:互聯網
上載者:User

PHP與MySQL互動使用詳解
1、建立自動連接資料庫的代碼,並產生一些必要的代碼.我們仔細研究一下資料庫的串連函數,會發現是這樣的一行代碼。
$link_id=@mysql_connect($hostname,$username,$password);
所以我們在include檔案connect.inc中添加以下代碼就可以了。connect.inc<?php$hostname='localhost';
$username='phpstar';$password='phpstar';$dbname='script';
$tablename='php_script';$link_id=mysql_connect($hostname,$username,$password);
if (! $link_id){ echo '<html><head><title>Error</title></head><body>';
echo 'Connection to PHP has failed.';echo '</body></html>';exit(); }?>
把這個程式加入到每個PHP指令碼中,這樣當指令碼運行時就建立了資料庫連接。因為我們的程式具有互動性,我們要處理使用者輸入的資訊,所以在該檔案中還應該加入以下代碼.
<?php//接著上面的代碼//加入一個處理輸入資訊的代碼,並產生一個數組備用$arr_request=array();/*定義數組*/
if (count($HTTP_GET_VARS)) /*如果使用者資訊以GET方式輸入,則讀資料*/
{ while (list($key, $value) = each ($HTTP_GET_VARS)) /*函數list()與each()配合處理輸入資料*/
{ $arr_request[strtolower($key)] = $value; } }
/*函數strtolower()將起區分作用的key字串轉為小寫,這樣對後面的編程有好處,並把他們組成數組*/
if (count($HTTP_POST_VARS)) /*使用者資訊以POST方式輸入*/
{ while (list($key, $value) = each ($HTTP_POST_VARS))
{ $arr_request[strtolower($key)] = $value; } } //我們還要定義每次輸出的HTML
function html_header($title){ echo '<html><head><title>';echo "$title";
echo '</title></head><body bgcolor="#CCCCCC">'; }function html_footer()
{ global $link_id;@mysql_close($link_id);echo '</body></html>';}//還有一個出錯資訊處理
function html_error_exit($msg){ $errno = mysql_errno(); /*得到錯誤資訊代碼*/
$error = mysql_error(); /*得到錯誤資訊,兩者一起起排錯作用*/
echo '<html><head><title>Error</title></head><body>';echo $msg;
echo "<br>Error: ($errno) $error<br>";echo '</body></html>';exit(); }?>
好了!我們把一些常用的代碼放在了這裡,用起來就方便了2、 建立資料庫表這有兩種方法:在DOS環境下輸入命令,但容易出錯哦.
利用程式,就算出錯,修改起來也容易.我們用程式來建立資料表.因為我們的程式要有普遍性,所以表中的欄位並不重要,這裡我們只是簡單的建立一個.該表具有以下管理欄位:
key_script 這是一個有自動增量的欄位,它保證表中的紀錄都是獨一無二的.date_created 這是一個日期欄位,儲存該紀錄建立的時間
data_updated 這也是日期欄位,儲存該紀錄最後一次更新的時間
flag_deleted 儲存該紀錄是否被刪除,"Y":該紀錄已被刪除,"N":該紀錄沒刪除,可使用具有以下儲存資訊的欄位.script_name 程式名稱
script_size 程式位元組數script_describe 程式的簡單說明author_name 程式作者名author_email 程式作者的email
author_homepage 程式作者的首頁下面建立該程式:createTable.php<?phprequire('connect.inc');
$str_sql="create table php_script(
key_script int(10) unsigned DEFAULT '0' NOT NULL auto_increment,
date_created datetime DEFAULT '0000-00-00 00:00:00',
date_updated datetime DEFAULT '0000-00-00 00:00:00',
flag_deleted enum('Y','N') DEFAULT 'N' NOT NULL,
script_name VARCHAR(20) NOT NULL,script_size VARCHAR(10) NOT NULL,
script_describe VARCHAR(200) NOT NULL,author_name VARCHAR(20) NOT NULL,
author_email VARCHAR(20) NOT NULL,author_homepage VARCHAR(30) NOT NULL,
primary key (key_script))";$result=mysql_db_query($dbname,$str_sql,$link_id);
if ($result){echo"ok! Table $tablename has been created!";}else{echo"Failed!";}
?>OK! 我們的表建好了!3、產生插入紀錄代碼程式。似乎我們應該先把紀錄顯示出來,然後才插入紀錄,但因為我們還沒有紀錄,所以把這一步提到前面來。
首先、建立一個HTML表單,以便使用者輸入相關資訊。其次、建立能插入表單資訊的MySQL代碼。好! 我們開始,表單樣式如下:程式名:檔案大小:程式描述:作者名:
作者郵件地址:作者的首頁:能插入表單資訊的MySQL代碼如下:script_insert_action.php<?php
require('connect.inc');if($arr_request['action']=='insert'){
$current_date=date('Y-m-d H:i:s');/*把目前時間按YYYY-MM-DD HH:MM:SS方式排列*/
/*下面要動態產生SQL代碼,其中我們定義的自動增量的欄位由MySQL自己產生*/
/*另外flag_deleted欄位的卻省值是"N",所以這兩項都不需要我們在這裡特別提出來*/
/*大家都知道:PHP嚴格區分單引號(')、雙引號(")的作用。而我們的作者名等在數組內*/
/*我們要這樣引用數組:$arr_request['author_name'],注意這裡有單引號(')*/
/*而我們在輸入insert語句的值時應該這樣:VALUES('$current_date') */
/*如果我們不去處理這些分號,就會出現這種情況:VALUES('$arr_request['author_name']') */
/*這種情況PHP能處理好嗎?當然不能,所以我們的想方法來處理它*//*這裡,我們用下面這種技術來避免這個問題;當然這裡還有其它的方法。您先想想吧!*/
$script_name=$arr_request['script_name'];
$script_size=$arr_request['script_size'];
$script_describe=$arr_request['script_describe'];
$author_name=$arr_request['author_name'];
$author_email=$arr_request['author_email'];
$author_homepage=$arr_request['author_homepage'];/*這樣一替換,處理時就好多了*/
$str_sql="insert into $tablename(date_created,date_updated,script_name,
script_size,script_describe,author_name,author_email,author_homepage)VALUES(
'$current_date','$current_date','$script_name','$script_size',
'$script_describe','$author_name','$author_email','$author_homepage')";
$result=mysql_db_query($dbname,$str_sql,$link_id);/* 下面給使用者簡單的資訊反饋 */
if (!$result){html_error_exit('MySQL插入命令失敗!');}else(html_header('成功');
echo"<center> ";echo('MySQL插入命令成功');echo"<br> ";echo"html_footer();)?>
OK! 插入紀錄功能完成!
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.