PHP與MySQL交互使用詳細(xì)說明
發(fā)表時(shí)間:2024-05-29 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]PHP與MySQL交互使用詳解 1、創(chuàng)建自動(dòng)連接數(shù)據(jù)庫的代碼,并生成一些必要的代碼.我們仔細(xì)研究一下數(shù)據(jù)庫的連接函數(shù),會(huì)發(fā)現(xiàn)是這樣的一行代碼。 link_id=@mysql_connect(hostname,username,password); 所以我們?cè)趇nclude文件connect.inc...
PHP與MySQL交互使用詳解
1、創(chuàng)建自動(dòng)連接數(shù)據(jù)庫的代碼,并生成一些必要的代碼.我們仔細(xì)研究一下數(shù)據(jù)庫的連接函數(shù),會(huì)發(fā)現(xiàn)是這樣的一行代碼。
$link_id=@mysql_connect($hostname,$username,$password);
所以我們?cè)趇nclude文件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(); }?>
把這個(gè)程序加入到每個(gè)PHP腳本中,這樣當(dāng)腳本運(yùn)行時(shí)就建立了數(shù)據(jù)庫連接。因?yàn)槲覀兊某绦蚓哂薪换バ?我們要處理用戶輸入的信息,所以在該文件中還應(yīng)該加入以下代碼.
<?php//接著上面的代碼//加入一個(gè)處理輸入信息的代碼,并生成一個(gè)數(shù)組備用$arr_request=array();/*定義數(shù)組*/
if (count($HTTP_GET_VARS)) /*如果用戶信息以GET方式輸入,則讀數(shù)據(jù)*/
{ while (list($key, $value) = each ($HTTP_GET_VARS)) /*函數(shù)list()與each()配合處理輸入數(shù)據(jù)*/
{ $arr_request[strtolower($key)] = $value; } }
/*函數(shù)strtolower()將起區(qū)分作用的key字串轉(zhuǎn)為小寫,這樣對(duì)后面的編程有好處,并把他們組成數(shù)組*/
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>';}//還有一個(gè)出錯(cuò)信息處理
function html_error_exit($msg){ $errno = mysql_errno(); /*得到錯(cuò)誤信息代碼*/
$error = mysql_error(); /*得到錯(cuò)誤信息,兩者一起起排錯(cuò)作用*/
echo '<html><head><title>Error</title></head><body>';echo $msg;
echo "<br>Error: ($errno) $error<br>";echo '</body></html>';exit(); }?>
好了!我們把一些常用的代碼放在了這里,用起來就方便了2、 創(chuàng)建數(shù)據(jù)庫表這有兩種方法:在DOS環(huán)境下輸入命令,但容易出錯(cuò)哦.
利用程序,就算出錯(cuò),修改起來也容易.我們用程序來創(chuàng)建數(shù)據(jù)表.因?yàn)槲覀兊某绦蛞衅毡樾?所以表中的字段并不重要,這里我們只是簡單的創(chuàng)建一個(gè).該表具有以下管理字段:
key_script 這是一個(gè)有自動(dòng)增量的字段,它保證表中的紀(jì)錄都是獨(dú)一無二的.date_created 這是一個(gè)日期字段,儲(chǔ)存該紀(jì)錄創(chuàng)建的時(shí)間
data_updated 這也是日期字段,儲(chǔ)存該紀(jì)錄最后一次更新的時(shí)間
flag_deleted 儲(chǔ)存該紀(jì)錄是否被刪除,"Y":該紀(jì)錄已被刪除,"N":該紀(jì)錄沒刪除,可使用具有以下儲(chǔ)存信息的字段.script_name 程序名稱
script_size 程序字節(jié)數(shù)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、生成插入紀(jì)錄代碼程序。似乎我們應(yīng)該先把紀(jì)錄顯示出來,然后才插入紀(jì)錄,但因?yàn)槲覀冞沒有紀(jì)錄,所以把這一步提到前面來。
首先、創(chuàng)建一個(gè)HTML表單,以便用戶輸入相關(guān)信息。其次、創(chuàng)建能插入表單信息的MySQL代碼。好! 我們開始,表單樣式如下:程序名:文件大。撼绦蛎枋觯鹤髡呙
作者郵件地址:作者的主頁:能插入表單信息的MySQL代碼如下:script_insert_action.php<?php
require('connect.inc');if($arr_request['action']=='insert'){
$current_date=date('Y-m-d H:i:s');/*把當(dāng)前時(shí)間按YYYY-MM-DD HH:MM:SS方式排列*/
/*下面要?jiǎng)討B(tài)生成SQL代碼,其中我們定義的自動(dòng)增量的字段由MySQL自己產(chǎn)生*/
/*另外flag_deleted字段的卻省值是"N",所以這兩項(xiàng)都不需要我們?cè)谶@里特別提出來*/
/*大家都知道:PHP嚴(yán)格區(qū)分單引號(hào)(')、雙引號(hào)(")的作用。而我們的作者名等在數(shù)組內(nèi)*/
/*我們要這樣引用數(shù)組:$arr_request['author_name'],注意這里有單引號(hào)(')*/
/*而我們?cè)谳斎雐nsert語句的值時(shí)應(yīng)該這樣:VALUES('$current_date') */
/*如果我們不去處理這些分號(hào),就會(huì)出現(xiàn)這種情況:VALUES('$arr_request['author_name']') */
/*這種情況PHP能處理好嗎?當(dāng)然不能,所以我們的想方法來處理它*//*這里,我們用下面這種技術(shù)來避免這個(gè)問題;當(dāng)然這里還有其它的方法。您先想想吧!*/
$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'];/*這樣一替換,處理時(shí)就好多了*/
$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! 插入紀(jì)錄功能完成!