連線到mysql:
mysql_connect():
$dbc=mysql_connect($host,$user,$password);
選擇當前資料庫:
mysql_select_db($database_name);
mysql_select_db('$database_name',$conn);
eg:<?phpdefine ('db_user','root');define('db_pwd','mysql');define('db_host','localhost');define('db_name','content');$dbc=@mysql_connect(db_host,db_user,db_pwd) ordie('could not connect to mysql:'.mysql_error());
@mysql_select_db(db_name) ordie('could not select the database:'.mysql_error());?>
如果函式不能返回有效的資源鏈結,則會執行or die(), die()函式會終止指令碼的執行。
執行簡單的查詢:
$result=mysql_query($query);
對於像insert、update、delete等簡單的查詢,它們不會返回記錄,$result變數將會返回true或false,這取決於查詢是否執行成功。對於確實會返回記錄的複雜查詢(select、show、describe和explain),如果查詢有效,則$result變數將是乙個指向查詢結果的資源鏈結;如果查詢無效,則$result變數將為false。
1 2 <?php3 $page_title='register';4 include('noname1.php');5 if(!empty($_post['submit']))6 9 if(empty($_post['name']))10 13 else14 17 18 if(empty($_post['email']))19 22 else23 26 27 if(!isset($_post['gender']))28 31 else32 35 36 /*if(!empty($post['comments']))37 40 else41 */44 if(empty($errors))45 65 echo'please try again!';66 }67 ?>68
mysql_close();//php會在指令碼的末尾自動關閉連線,所以這不是必須的。
檢索查詢結果
格式:mysql_fetch_row(result);
說明:mysql_fetch_row用來查詢結果的一行儲存至陣列,該陣列下標從0開始,每乙個陣列元素對應
乙個域。通過迴圈,可以將查詢結果全部獲得。
格式:1 mysql_fetch_array(result);
說明:mysql_fetch_array和mysql_fetch_row功能基本相同,只不過它除了可以用從0開始的偏移量作
索引,還可以用網域名稱作索引。
值返回下一行的所有域值,並將其儲存至乙個陣列中,沒有行時返回false。
mysql_query("set name 'gbk'")
//使用gbk中文編碼
處理select查詢結果的主要工具是mysql_fetch_array(),它帶有乙個查詢結果變數($result),並以陣列格式一次返回一行資料。
從查詢讀取每條記錄:
while($row=mysql_fetch_array($result))
mysql_fetch_array()函式還帶有乙個可選項,用於指定返回的陣列的型別:聯合陣列、索引陣列,或則兩者。聯合陣列允許通過名稱引用列值,而索引陣列則要求只使用數字,他們如下表:
常量示例
mysql_assoc
$row['column']
mysql_num
$row[0](速度稍快)
mysql_both
$row[0]或$row['column'](預設)
釋放查詢資訊:
mysql_free_result($result);
這一步不是必需的,因為php將在指令碼末尾自動釋放資源。
eg:1 <?php2 require_once('connectdb.php');3 $query="select concat(url,',',title) as name ,url_id as id from urls";4 $result=@mysql_query($query);5 if($result)6 23 mysql_close();24 25 ?>
執行結果為:
技巧總結
mysql_fetch_array()函式與mysql_fetch($result,mysql_num)函式等價
mysql_fetch_assoc()函式與mysql_fetch_array($result,mysql_assoc)函式等價
必需使用mysql_query()執行查詢,然後使用mysql_fetch_array()來檢索單行資訊,如果要檢索多行,則可使用while迴圈(而不要使用for或foreach迴圈)。
確保sql安全
關於php的資料庫安全可歸納為兩大類問題:
1.保護資料庫訪問資訊
2.在執行查詢時要小心。
使用特定的
mysql_real_escape_string()
函式,轉義那些有可能有問題的字元來清理資料:
$data=mysql_real_escape_string($data,$dbc);
這個函式與addslashes()一樣。它更特定於資料庫。
使用ini_get()函式測試magic quotes狀態,這個函式將為特定的選項返回php的配置檔案中的配置。如果ini_get()函式返回true,就說明開啟了magic quotes——則將在應用mysql_real_escape_string()之前,去除所有的斜槓。
在php的當前版本中,magic quotes預設是關閉的,因此ini_get()將返回false,並且不需要去除任何現有的斜槓。
如果magic quotes是開啟的情況下,它會自動在需要轉義的字元前加上「\」,而我們向資料庫中寫入的時候這往往會引起錯誤,所以需要使用stripslashes($string)把那些\去掉。然後再呼叫mysql_real_escape_string()函式。
eg:1 functionescape_data($data)2 8 retrunmysql_real_escape_string(trim($data),$dbc);9 }
技巧總結
mysql_real_escape_string()函式一招所用的語言對字串進行轉義
mysql_real_escape_string()函式需要乙個資料庫連線。
get_magic_quotes_gpc()函式也可用於返回當前的magic quotes設定。
ini_get()可用於獲取許多不同的php.ini設定的內容,不只是magic quotes的設定。
統計返回的記錄
mysql_num_rows(),返回select查詢索引的行數,並取查詢的結果作為乙個引數。
eg:$num=mysql_num_rows($result);
其他常用mysql函式介紹
mysql_insert_id
傳回最後一次使用insert指令的id。
mysql_tablename
取得資料庫名稱
php中mysql函式 php中mysql有關函式
1.mysql query 一般是用來查詢資料裡面的資料。如 username post name sql select from members where login name username result mysql query sql 以上程式是檢測資料庫中是否存在表單傳送過來的使用者名稱...
php中mysql函式 PHP中的MySQL函式
本篇主要介紹採用php語言如何連線mysql資料庫。首先需要檢測服務mysql是否開啟成功。檢視phpinfo 函式 使用php運算元據庫的步驟 一 連線資料庫伺服器 二 選擇資料庫 mysql select db 資料庫名 三 設定編碼格式 mysql set charset utf 8 四 資料...
使用PHP鏈結MySQL
一 使用php查詢mysql資料庫 1.通過php來訪問mysql的步驟是 連線到mysql 選擇操作的資料庫 建立查詢的字段 執行查詢的語句 檢索出結果並在網頁上顯示 斷開與mysql的連線 我們將依次完成這些操作,重要的是首先以安全的方式建立登陸的詳細資料,以使的別人不容易訪問你的資料庫。2.建...