Chương này tương đối dài mà lại rất thú vị! hơn thế nữa tầm quan trọng đặc biệt của cơ sở dữ liệu là nằm ở vị trí chương này với chương sau, cho nên vì thế nhất thiết chúng ta phải đọc kĩ!Trong chương này:
*

*

*

*

*

Kết nối vào cơ sở dữ liệu

Để có thể làm việc trên CSDL, việc thứ nhất là phải kết nối (connect) vào CSDL.

Bạn đang xem: Mysql_fetch_assoc là gì, mysql_fetch_array là gì, mysql_fetch_array là gì

Bạn vẫn xem: Mysql_fetch_array là gì

Các các bạn còn lưu giữ không, tôi đã có nhắc rằng để ra lệnh cho MySQL mình cần thiết nói trực tiếp với nó mà bắt buộc nhờ PHP có tác dụng "thông dịch viên" trung gian. Vấn đề là thứ 1 PHP quan trọng bảo tức thì "MySQL ơi, làm cho ơn đến tớ lấy links phim Tây Du Kí nhé !" được. Vì thứ nhất MySQL đòi user name với password, phải có user name với password bắt đầu vào được CSDL của bản thân chứ, còn nếu không thì người nào cũng có thể vào được rồi xóa hết hoặc đổi khác hết thì sao.

Xem thêm: Tải Vntools Cho Office 2010, Hướng Dẫn Cài Đặt Và Sử Dụng Hàm Đổi Số Ra Chữ


Để theo dõi chi tiết việc liên kết và làm việc trên CSDL, mình đang học lần lượt các cách để :Kết nối vào csdl (lấy chìa khóa xuất hiện vào nhà)Chọn csdl cần thao tác làm việc (vào nhà và chọn chỗ làm việc)Ngắt kết nối với CSDL sau khoản thời gian đã làm cho việc xong xuôi (khóa cửa lại, thoát ra khỏi nhà)Kết nối (connection)Để connect vào CSDL chúng ta dùng một hàm PHP: mysql_connectHàm này cần phải có 3 thông số:Tên (địa chỉ) của dòng sản phẩm chủ cất CSDL (server), nếu như khách hàng test trên thứ tính của người tiêu dùng thì địa chỉ cửa hàng này là "localhost"User name: liên hệ admin để biết username singin vào CSDL, nếu khách hàng có một chiếc host miễn phí, thì thường thì username này trùng cùng với username bạn đăng nhập vào FTP, nếu như khách hàng test bên trên máy của chúng ta thì user name là "root" Password: 99% là tương đương với password bạn dùng để kết nối FTP. Demo trên sản phẩm công nghệ thì nhằm "" (không có password)Ví dụ thử nghiệm trên đồ vật với WAMP: mysql_connect("localhost","root","");Chọn cơ sở dữ liệu làm việcSau khi đã đăng nhập vào database rồi, bạn cần phải lựa lựa chọn tên cơ sở dữ liệu mà bạn cần thao tác làm việc (nếu bạn có không ít CSDL). Đối với những host miễn chi phí (như FREE.FR chẳng hạn) thì nó chỉ cho bạn một csdl thôi, vậy cũng quá đầy đủ rồi! với tên của csdl này thường là trùng cùng với username singin vào MySQL của doanh nghiệp (do server tạo ra tự động).Hàm PHP để tuyển lựa CSDL: mysql_select_db (chữ db là viết tắt của DataBase)Ví dụ trường hợp tên của cơ sở dữ liệu của tôi là khoailang
, thì tôi có tác dụng như sau:Code PHP: mysql_connect("localhost","root",""); // singin vào csdl trên trang bị tínhmysql_select_db("khoailang"); //Chọn cơ sở dữ liệu tên là khoailang?>Ngắt liên kết Sau lúc đã làm việc với database xong, bài toán cuối cùng của khách hàng là bắt buộc ngắt kết nối! giống hệt như căn nhà của chúng ta vậy, bạn có nhu cầu vào thì phải có chìa khóa (ở đó là username cùng password), rồi vào làm việc riêng, sau khi kết thúc việc bạn có nhu cầu ra khỏi đơn vị hay đi lượn lờ đâu đó thì bắt buộc khóa cửa ngõ lại!Hàm nhằm ngắt kết nối (đóng csdl lại) : mysql_close(); ko cần thông số bên trongCấu trúc cầm tắt như sau:Code PHP: mysql_connect("localhost","root",""); mysql_select_db("khoailang");// thao tác riêng trên CSDL//…mysql_close(); // xong việc rồi thì khóa database lại?>Nếu bạn khai báo đúng showroom server, username, password, tên csdl thì mọi việc suông sẻ, không vụ việc gì, còn giữa những thông số trên mà sai thì bạn sẽ bị báo lỗi!

Lấy dữ liệu

Thường thường sau khi đã bao gồm một website (và tất cả CSDL) thì mình bắt buộc nhập database vào, sau đó đọc cơ sở dữ liệu và truy hỏi xuất dữ liệu mà mình nên dùng.Bây tiếng tôi sẽ hướng dẫn các bạn làm sao nhằm đọc dữ liệu, còn câu hỏi ghi dữ liệu tôi đã nói sau.Nhưng để đọc csdl thì trước tiên mình cần phải có sẵn một CSDL không thiếu thốn để mà lại đọc chứ nhỉ, không có gì cả thì đem gì nhưng mà đọc?!May cho các bạn là từ bây giờ tôi khá bị siêng năng, đề xuất đã sẵn sàng sẵn cho chúng ta một bảng tài liệu về đoạn phim games (jeux_videos trong giờ đồng hồ Pháp). Các bạn hãy sở hữu bảng này về trước đã:File gồm phần không ngừng mở rộng là .sql các bạn định mở file ra nhằm đọc hả ? Nói bé dại nghe nè : chả gồm gì thú vị nhằm đọc trong số đó đâu, chỉ là 1 đám rừng toàn là text.Việc nên làm bây giờ là nạp cái biển này vào PHPMyAdmin. Hãy theo trình tự tiếp sau đây nhé :Mở PhpMyAdmin
ra,Chọn csdl test trong thực đơn đổ xuống mặt tráiChọn tab Importer (import) trên sản phẩm menu lớn bên tráiNhìn xuống dưới, nhấp nút parcourrir (Browse)Một vỏ hộp thoại hiện tại ra, bạn hãy đi kiếm nơi để file jeux_videos.sql mà các bạn đã tải hồi nãy, nhấp lựa chọn nóCuối cùng, nhấp exécuter (execute) dứt rồi , các bạn sẽ thấy mặt trái, bên dưới Test bao gồm một bảng mới mở ra tên là jeux_videos đấy!Nếu các bạn nhấp vào hình loại bảng ở bên cạnh chữ jeux_videos thì bảng tài liệu sẽ hiện tại ra mặt phải, sau đây là 5 dòng thứ nhất trong bảng dữ liệu:ID nom possesseur console prix nbre_joueurs_max commentaires
1 Super Mario Bros Florent NES 4 1 Un jeu d"anthologie !
2 Sonic Patrick Megadrive 2 1 Pour moi, le meilleur jeu au monde !
3 Zelda : ocarina of time Florent Nintendo 64 15 1 Un jeu grand, beau et complet comme on en voit rarement de nos jours
4 Mario Kart 64 Florent Nintendo 64 25 4 Un excellent jeu de kart !
5 Super Smash Bros Melee Michel GameCube 55 4 Un jeu de baston délirant !
Tạm thời, hãy khoan sửa đổi gì cái biển này nhé !Mục đích của chúng ta hiện nay là : viết một trang php được cho phép in ra tất cả dữ liệu đựng trong bảng bên trên !Viết một query Đã mang lại hồi quan trọng đặc biệt của buổi học hôm nay rồi, hiện giờ mình đang yêu cầu MySQL làm vài trang bị bằng ngôn từ SQL. Viết một yêu cầu điện thoại tư vấn là thực hiện một query . Mình đã nhờ MySQL in ra ngôn từ của tấm bảng trò đùa điện tử (jeux_videos) mà hồi nãy mình có đề xuất bạn cài đặt về đấy !Để viết một query bọn họ sử dụng hàm PHP : mysql_queryHàm này đựng một thông số, đó là tất cả những gì mà PHP sắp yêu ước MySQL làm cho (bằng ngôn từ SQL)Hàm này trả về một giá trị, vị vậy mình rất cần được có một biến hóa để chứa đều gì mà MySQL trả lời.Mình luôn viết như vậy này :Code PHP:$traloi chứa phần lớn gì nhưng MySQL vấn đáp theo solo yêu cầu của mình.Bây giờ chúng ta hãy xem làm sao để hỏi MySQL mọi gì tất cả trong bảng jeux_videos nhé.Query SQL đầu tiên của người tiêu dùng Như sẽ nói, SQL là một trong ngôn ngữ cho phép mình giao tiếp với MySQL, đây là query SQL thứ nhất :Code SQL :Dòng này có thể hiểu là : chọn toàn bộ các dữ liệu trong bảng jeux_videos.Mình thuộc phân tích vài tự khóa vào này nhé :SELECT : trong ngôn từ SQL, việc trước tiên là bản thân phải khẳng định kiểu (loại) thao tác mà bản thân sẽ làm với MySQL. Ở chương này họ chỉ xem từng một thao tác làm việc CHỌN thôi (SELECT). SELECT được cho phép hiển thị tất cả nội dung trong một bảng.* : tức thì sau SELECT, họ phải xác định rằng bọn họ muốn lấy tài liệu trong cột (trường, fields) nào. Dấu * ám chỉ "lấy hết mang lại tao ! ko chừa lại máy gì cả! ». Mang sử bạn có nhu cầu chọn cột "nom" (tên) cùng "possesseur" (người sở hữu) thì chúng ta gõ : SELECT nom, possesseur FROM jeux_videos FROM là 1 trong từ nối (từ liên kết), ý nói "ở trong" cái bảng nào ! Sau FROM mình sẽ đã cho thấy tên của tấm bảng mà bạn muốn lấy dữ liệu. Jeux_videos chính là tên của tấm bảng mà mình muốn lấy tài liệu !Mổ xẻ xong xuôi rồi, hiện giờ mình hãy để lá solo này vào hàm mysql_query đi ! Code PHP :
$traloi=mysql_query("SELECT * FROM jeux_videos") ;?> vắt là vươn lên là $traloi của mình bây giờ đã đựng câu trả lời của MySQL rồi đấy!Cool, hiện nay làm sao in hiệu quả ra đây?In (hiển thị) công dụng của một queryVấn đề là cái biến chuyển $traloi của chính mình chứa một thứ nào đấy không thể bung ra được, nghĩa là không giống như một biến thông thường chứa số hay đựng text nhưng mình rất có thể dùng lệnh echo nhằm in ra, nhưng mà nó đựng một thứ cực kỳ hỗn độn vô đơn lẻ tự.Bạn tưởng tượng nếu chiếc bảng của chính bản thân mình có 10 cột, 200 dòng, thì cái phát triển thành $traloi đựng 2000 thông tin! bây giờ làm sao lấy ra 2000 tin tức đó đây? Loại thay đổi nào lại sở hữu kiểu bảng giống hệt như vậy nhỉ? trường đoản cú "cái bảng" góp tôi nhớ đến Array! PHP gồm sẵn một hàm giúp tạo nên một array tự $traloi: mysql_fetch_array($traloi)Đây là 1 trong mảng hình dáng bảng kết hợp (kiểu trước tiên là bảng khắc số như mình đã học nghỉ ngơi chương Array rồi đấy), nếu bạn có nhu cầu lấy tài liệu ở cột "console" chẳng hạn, thì chúng ta phải áp dụng một mảng khác: $dulieu ($dulieu là một biến array luôn đấy)Tiếp theo, mình cần dùng một vòng lặp nhằm in hết các hàng ra! từng lần chúng ta dùng hàm mysql_fetch_array, các bạn sẽ truy nhập vào hàng tiếp nối của bảng. Vòng lặp sẽ tự động hóa lặp lại cho đến lúc nào không còn mặt hàng nào nữa vào bảng của bản thân thì thôi. Đây là điểm dễ dàng khi mình lừng khừng bảng của chính bản thân mình có bao nhiêu hàng!Đây là tất cả những gì tôi đã làm để in ra ngôn từ của mẫu bảng:Code PHP: mysql_connect("localhost","root",""); //đăng nhập vào CSDLmysql_select_db("khoailang"); // chọn CSDL // viết đối kháng chọn tất cả các cột của bảng jeux_videos$traloi=mysql_query("SELECT * FROM jeux_videos"); while($dulieu=mysql_fetch_array($traloi))?>

Trò chơi echo $dulieu;?>Tên tín đồ sỡ hữu echo $dulieu;?> cùng nó chào bán trò này với giá : echo $dulieu;?> dollarsTrò đùa này hoạt động trên nền: echo $dulieu;?> và mình có thể chơi cùng lúc echo $dulieu; ?> bạn maximum. Thằng echo $dulieu;?> đã review trò echo $dulieu;?> là : echo $dulieu;?>

mysql_close();?> các bạn nhìn thấy gì? Nó in ra khoảng tầm 50 kết quả, ko gì lạ bởi vì cái bảng của chính mình chứa khoảng chừng 50 mặt hàng mà. $traloi là 1 biến đựng câu trả lời của MySQL, là 1 trong mớ lếu láo độn vô trơ khấc tự bao gồm kiểu tài liệu là resource (hiếm gặp từ này). Nhờ vào hàm mysql_fetch_array nhưng mình tạo nên mảng $dulieu ! Mảng này cất 1 loại trong bảng dữ liệu của mình, khi mình cần sử dụng hàm mysql_fetch_array một lần tiếp nữa thì mảng $dulieu sẽ cất hàng thứ hai trong bảng dữ liệu. Tưởng tượng nắm này nhé :Lần trước tiên gọi : $dulieu= mysql_fetch_array($traloi) ; Thì $dulieu có dạng một mảng như thế này : "nom" :"Super mario Bros", "possesseur" :"Florent","prix" :4, "console" :"NES", "nbre_joueurs_max" :1,"commentaires" :"un jeu d"anthologie" sau thời điểm in hết dòng này, vòng lặp while
được cho phép gọi tiếp hàm mysql_fetch_array một lượt nữa, và lần này mảng $dulieu tự động chứa hàng thứ hai của bảng jeux_videos cùng có kết cấu như bên trên ! Vậy đó! Bây giờ chúng ta có thể cho in ra bất kể thứ gì chúng ta muốn, không ai ép chúng ta phải in ra cả cái bảng đâu, ví dụ chúng ta có thể chỉ in ra thương hiệu của trò chơi bằng cách chọn cột "nom":Code PHP: mysql_connect("localhost","root","");mysql_select_db("khoailang") ;$traloi=mysql_query("SECLECT nom FROM jeux_videos");$dem = 1;while($dulieu=mysql_fetch_array($traloi))?> Trò nghịch thứ echo $dem;?> là echo $dulieu ; $dem++ ; ?> mysql_close() ;?> Lỗi lầm vây bí mật …Khi một query SQL của bạn bị treo, thường xuyên thì PHP đang báo là gồm lỗi ở cái chứa hàm mysql_fetch_array. Điều này thực tế không đúng chuẩn đâu, hoàn toàn có thể bạn đã bị lỗi đâu đó phía trên kia, chứ không phải đúng mực tại chiếc mysql_fetch_array đâu. Để biết rõ chi tiết lỗi gì, sinh sống đâu, bạn nên tập kinh nghiệm chèn thêm mẫu này vào cùng mẫu với mysql_query nhé : or die(mysql_error());Ví dụ cùng với trường đúng theo mình đang có tác dụng :Dòng code vừa cấp dưỡng sẽ không làm cái gi cả nếu như bạn không có lỗi, ngược lại nếu tất cả lỗi đâu đó, nó sẽ báo cho chính mình biết cụ thể hơn!

Tiêu chuẩn chỉnh lựa chọn

Ở đây chúng ta chỉ thân thiết tới các query query SQL thôi. Bạn sẽ thấy, bằng phương pháp thay đổi điều kiện và tiêu chuẩn chỉnh chọn lựa, mình có thể sắp xếp dữ liệu một cách nhỏ gọn ngăn nắp dễ dàng!Các từ khóa đã đề cập: WHERE, ORDER BY, LIMITWHERE
Where góp mình lọc bớt tài liệu theo tiêu chuẩn chỉnh mà mình để ra. Chẳng hạn hiện giờ mình chỉ muốn lôi ra các trò nghịch của Patrick (trong bảng jeux_videos), query của mình sẽ thêm WHERE possesseur="Patrick" vào sau từ bỏ khóa FROM:Code SQL:Dòng này được hiểu là : chọn toàn bộ các cột vào bảng jeux_videos làm thế nào cho cột possesseur cất Patrick.Code PHP: mysql_connect("localhost","root","");mysql_select_db("khoailang");$traloi=mysql_query("SELECT * FROM jeux_videos WHERE possesseur="Patrick"") or die(mysql_error());while($dulieu=mysql_fetch_array($traloi))?> Trò nghịch echo $dulieu;?> là của echo $dulieu;?> mysql_close() ;?>Nếu thích chúng ta có thể thay đổi một chút, chẳng hạn bạn có nhu cầu xem toàn bộ trò nghịch của Michel, bạn hãy thay WHERE possesseur="Patrick" bởi WHERE possesseur="Michel" demo xem !Mình cũng có thể đặt đk vào trong query nữa, chẳng hạn mình thích xem rất nhiều trò làm sao của Patrick nhưng mà nó bán với giá phải chăng hơn 20 dollars :Code SQL :SELECT * FROM jeux_videos WHERE possesseur="Patrick" và prixORDER BYORDER BY cho phép chúng ta sắp xếp lại hiệu quả thu được cho tất cả trật tự! ví dụ điển hình mình sẽ thu xếp lại bảng trò đùa điện tử jeux_videos theo trang bị tự tăng cao của chi phí (prix):Code SQL: mysql_connect("localhost","root","");mysql_select_db("khoailang");$traloi=mysql_query("SELECT * FROM jeux_videos ORDER BY prix") or die(mysql_error());while($dulieu=mysql_fetch_array($traloi))echo "Trò $dulieu giá bán $dulieu dollars";echo "" ;mysql_close() ;?> nếu như tớ muốn bố trí theo thiết bị tự giảm dần thì sao ? Thì thêm DESC vào cuối dòng lệnh SQL bên trên :Code SQL :SELECT * FROM jeux_videos ORDER BY prix DESCNếu chúng ta thực hiện nay việc thu xếp thứ tự cho một cột đựng text, thì text đó sẽ được sắp xếp theo mẫu tự ABCLIMITLIMIT đến phép họ giới hạn được tác dụng xuất ra, chẳng hạn chúng ta chỉ yêu cầu lấy trăng tròn dòng trước tiên ra thôi thì họ sẽ thêm tự LIMIT vào cuối query, kèm theo 2 con số, ngăn cách bằng dấu phẩy:Code SQL:Đầu tiên, số 0 cho rằng MySQL đang đọc dữ liệu kể từ hàng số 0 (tức hàng máy 1), phương pháp đánh số của nó giống như cách khắc số trong mảng vậy! Số trang bị 2 cho biết thêm SỐ LƯỢNG hàng rất cần phải đọc! Ở đây nó sẽ đọc từ hàng số 0 mang đến hàng số 19 để được trăng tròn hàng!Ví dụ, nếu mình đặt:LIMIT 0,10: in ra 10 hàng đầu tiên (từ hàng vật dụng 1 cho hàng sản phẩm công nghệ 10) LIMIT 5,10: in ra 10 hàng, từ bỏ hàng trang bị 6 đến hàng vật dụng 15LIMIT 10,2: in ra 2 hàng, trường đoản cú hàng trang bị 11 đến hàng lắp thêm 12Cuc cu! Xin chào! Tớ là bạn thích cảm giác mạnh, đến tớ hỏi là tớ có thể để chung toàn bộ các tiêu chuẩn lựa chọn mà tớ học tập nãy tiếng vào cùng một loại query độc nhất được không ? Nghe kĩ đây chúng ta !
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *