第一次連接引用數據庫接觸php

上個星期我們小組完成了一個連接數據庫的小頁面,并且添加了增刪改的功能。

第一個是要連庫。下面是我連庫的代碼,其中我的數據庫名為“test”。使用了PDO 連庫方式。

index.php

<?php

? ? ? ? $host='localhost';

? ? ? ? $userName='root';

? ? ? ? $password='';

? ? ? ? $conn = new PDO("mysql:host=$host;dbname=test", $userName, $password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"));

? ? ? ? echo " ";

? ? ? ? if ($conn->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {

? ? ? ? $stmt = $conn->prepare('select * from cjtest',array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));

? ? ? ? } else {

? ? ? ? ? die("error");

? ? ? ? }

?>?

連庫方式應該還有一種比較簡單的方式,就是用mysqli自己的連接。

<?php

$servername = "localhost";

$username = "username";

$password = "password";

// 創建連接$conn = new mysqli($servername, $username, $password);

// 檢測連接if ($conn->connect_error) {? ? die("連接失敗: " . $conn->connect_error);} echo "連接成功";

?>

而PDO與之不同的地方是創建連接一步不同。MySQLi是$conn= new mysqli($servername,$username,$password);

而PDO則是?$conn = new PDO("mysql:host=$host;dbname=test", $userName, $password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"));

PDO和MySQLi的另一個區別是PDO可以還連接別的數據庫,不僅可以連接mysql,而mysqli雖然只能連接mysql但是它看起來更方便,而且在連接mysql的時候看起來很簡單。。。

index.php

第二部分是將連接成功的表在頁面上顯示出來

<?php

foreach($conn->query('select * from cjtest') as $row => $key){

? ? ? ? ? ? if($row%2 == 0){

echo .$key['id']."".$key['name']."".$key['math']."".$key['english']"

}else{

echo .$key['id']."".$key['name']."".$key['math']."".$key['english']."

? ? ? ? ? ? }? ?

? ? ? }

?>在中間用html的table把它放進去就可以在頁面上以表格的形式出現了。

第三個部分是我們添加增刪改的功能。

首先我是先嘗試了添加修改,先是在我以上的代碼中添加了一個刪除的按鈕(寫在了循環中),之后在點擊按鈕之后會跳轉到我刪除的php中進行連庫刪除,之后再跳轉回我的原頁面。所以我跳轉的php中寫了連庫—>刪除xx行—>跳轉回主頁面(index.php)并且跳出“刪除成功”提示框。

其中我把主鍵放在學號(id)上,所以如果我要刪除xx行,就需要刪除php(delete.php)從index.php中獲取到id行之后連庫進行刪除。

delete.php

<?php

????????$host='localhost';

? ? ? ? $userName='root';

? ? ? ? $password='';

? ? ? ? $key=$_GET["id"];//獲取點擊的id行

? ? ? ? $conn = new PDO("mysql:host=$host;dbname=test", $userName,? ? ? ? ? ? $password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"));//PDO連庫

? ? ? ? $sql = "delete from cjtest where id={$key}";//mysql語句

? ? ? ? $result=$conn->exec($sql);//向mysql數據庫輸出執行命令語句

? ??????exec和query都是執行語句。但有所不同:

? ??????PDO::exec() 不會從一條 SELECT 語句中返回結果。對于在程序中只需要發出一次的 SELECT 語句,可以考慮使用 PDO::query()。

if($result){

? ? ? ? ? ? header("location:index.php");? ? ? ? ? ?這句和下句被劃掉的原因是:header的使用會導致它下面的語句不被執行,所以無論刪除成功與否都會跳轉。因此我們放棄了用header而是轉用location.href。

? ? ? ?? ? ?echo " alert('刪除成功!'); ";

????????????$url = "zwj_index.php" ;

? ? ? ? ? ? echo "<script> window.location.href ='$url';alert('刪除成功');</script>";?

? ? ? ? ? ? else{

? ? ? ? ? ? echo"錯誤";

}//其中的script是我在delete.php頁面上寫的一個javascript,alert()是提示框中的內容。

至此,刪除功能也就實現了。

之后是增加了修改的功能:

和刪除差不太多的是在刪除的旁邊添加了修改的按鈕,之后也是跳轉,但這次是跳轉到輸入頁面,之后再跳轉到修改數據庫的頁面(共2個)。最后跳轉回index.php并跳出修改成功。

不過首先還是要連庫。但是這次使用的sql語句并不是增刪查改,而是取值:getAttribute。

? ? ? ?<?php

? ? ? ? $host='localhost';

? ? ? ? $userName='root';

? ? ? ? $password='';

? ? ? ? $key=$_GET["id"];//獲取點擊的id行

????????$conn = new PDO("mysql:host=$host;dbname=test", $userName,? ? ? ? ? ? ????????$password,array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"));

????????echo " ";

? ? ? ? if ($conn->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql')

? ??????//PDO::getAttribute — 取回一個數據庫連接的屬性?

????????{

? ? ? ? $stmt = $conn->prepare('select * from ????????cjtest',array(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));

? ? ? ? } else {

? ? ? ? ? die("error");

? ? ? ? }

????????foreach($conn->query('select * from cjtest') as $row => $key)

以上是本次的連庫以及取回屬性。之后下面寫了表單(form)并在表單里添加輸入框,分別輸入了要修改的id,name,math,english。進行提交之后會跳轉到修改數據庫的php,其中,form表單只有結合submit才可以提交,所以不能用超鏈接什么的。。。一定要用表單提交。

之后要獲取從上一部傳來的所輸入的id

????????$id_new=$_POST["id"];

? ? ? ? $name = $_POST["name"];

? ? ? ? $math = $_POST["math"];

? ? ? ? $english = $_POST["english"];

之后則是跳轉到修改的php,進行和上面一樣的連庫之后再寫sql語句


$sql = "UPDATE cjtest SET name='$name',english='$english',math='$math' WHERE id='$id_new'";

其中我們可以發現,我之前再delete中獲取id的時候用的是GET,而再update中我卻用了POST。這是為什么呢?因為POST和GET有一些地方不太一樣。

?$_POST 變量用于收集來自 method="post" 的表單中的值。

從帶有 POST 方法的表單發送的信息,對任何人都是不可見的(不會顯示在瀏覽器的地址欄),并且對發送信息的量也沒有限制。

?$_GET 變量用于收集來自 method="get" 的表單中的值。

從帶有 GET 方法的表單發送的信息,對任何人都是可見的(會顯示在瀏覽器的地址欄),并且對發送信息的量也有限制。

GET?- 從指定的資源請求數據。

GET 請求可被緩存

GET 請求保留在瀏覽器歷史記錄中

GET 請求可被收藏為書簽

GET 請求不應在處理敏感數據時使用

GET 請求有長度限制

GET 請求只應當用于取回數據

POST?- 向指定的資源提交要被處理的數據。

POST 請求不會被緩存

POST 請求不會保留在瀏覽器歷史記錄中

POST 不能被收藏為書簽

POST 請求對數據長度沒有要求

因此我使用了POST而不是GET

之后的代碼和刪除的提示框還有跳轉一樣,都是跳轉回index.php只是alert()內的內容不同。

最后是增加了添加功能,再表格中添加了一個+按鈕,點開后會跳轉到一個和update輸入差不多的頁面中,也與update輸入差不多的寫法。只是跳轉的地址不再是update.php而是inner.php

inner.php

前面正常和上述一樣連庫,從上一個跳轉界面獲取輸入的id,name,math,english,但是sql語句不同:

$sql = "INSERT INTO cjtest(id,name,math,english) VALUES ('".$id."','".$name."','".$math."','".$english."')";

$result=$conn->exec($sql);

if($result){ $url = "index.php" ;

? ? ? ? ? ? echo "<script>window.location.href = '$url';alert(添加成功);</script>";?

? ? ? ? ? ? else{

? ? ? ? ? ? echo"錯誤";

至此,這個第一次用php連接引用的數據庫的頁面就做好了。


其中有一些新學到的還有需要注意的東西:

1、連庫方式。

2、foeach數組循環(每進行一次循環,當前數組元素的值就會被賦值給 $value 變量(數組? ??????指針會逐一地移動),在進行下一次循環時,您將看到數組中的下一個值。

3、exec() ,query()的區別。

4、header的使用。

5、form的提交問題。

6、GET和POST的區別。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,533評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,055評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 175,365評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,561評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,346評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,889評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,978評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,118評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,637評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,558評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,739評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,246評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,980評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,362評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,619評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,347評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,702評論 2 370