LẤY DỮ LIỆU TỪ MYSQL DATABASE SỬ DỤNG PHP

  -  
Chương này hơi dài tuy nhiên rất thú vị! không chỉ có vậy tầm quan trọng đặc biệt của database là nằm tại chương này cùng chương sau, vì vậy nhất thiết các bạn phải hiểu kĩ!Trong chương này:
*

*

*
*
*

Kết nối vào cửa hàng dữ liệu

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

Bạn đang xem: Lấy dữ liệu từ mysql database sử dụng php

Các các bạn còn nhớ không, tôi đã gồm nhắc rằng để ra lệnh cho MySQL mình quan trọng nói thẳng với nó mà cần nhờ PHP có tác dụng "thông dịch viên" trung gian. Vụ việc là đầu tiên PHP quan yếu bảo ngay "MySQL ơi, làm cho ơn mang đến tớ lấy link phim Tây Du Kí nhé !" được. Vì thứ nhất MySQL đòi user name cùng password, phải gồm user name với password bắt đầu vào được CSDL của bản thân mình chứ, nếu không thì ai ai cũng có thể vào được rồi xóa hết hoặc biến hóa hết thì sao.
*
Để theo dõi cụ thể việc liên kết và thao tác trên CSDL, mình đang học lần lượt các phương pháp để :Kết nối vào csdl (lấy chìa khóa xuất hiện vào nhà)Chọn database cần thao tác (vào nhà cùng chọn chỗ làm việc)Ngắt liên kết với CSDL sau khoản thời gian đã có tác dụng việc kết thúc (khóa cửa lại, 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 có 3 thông số:Tên (địa chỉ) của máy chủ chứa CSDL (server), nếu khách hàng test trên sản phẩm tính của công ty thì showroom này là "localhost"User name: liên hệ admin để tìm hiểu username đăng nhập vào CSDL, nếu bạn có một cái host miễn phí, thì thường thì username này trùng với username bạn đăng nhập vào FTP, nếu khách hàng test bên trên máy của bạn thì user name là "root" Password: 99% là giống với password bạn dùng để kết nối FTP. Test trên vật dụng thì nhằm "" (không có password)Ví dụ test trên sản phẩm với WAMP: mysql_connect("localhost","root","");Chọn database làm việcSau khi vẫn đăng nhập vào cơ sở dữ liệu rồi, bạn cần phải lựa chọn tên cơ sở dữ liệu mà các bạn cần thao tác làm việc (nếu bạn có khá nhiều CSDL). Đối với các host miễn phí tổn (như FREE.FR chẳng hạn) thì nó chỉ cho mình một cơ sở dữ liệu thôi, vậy cũng quá đầy đủ rồi! với tên của csdl này hay là trùng với username singin vào MySQL của công ty (do server tạo ra tự động).Hàm PHP để lựa chọn CSDL: mysql_select_db (chữ db là viết tắt của DataBase)Ví dụ nếu tên của csdl của tôi là khoailang
, thì tôi làm như sau:Code PHP:
mysql_connect("localhost","root",""); // đăng nhập vào database trên lắp thêm tínhmysql_select_db("khoailang"); //Chọn database tên là khoailang?>
Ngắt liên kết Sau lúc đã làm việc với csdl xong, việc cuối cùng của doanh nghiệp là bắt buộc ngắt kết nối! hệt như căn nhà của doanh nghiệp vậy, bạn có nhu cầu vào thì phải có chìa khóa (ở đây là username với password), rồi vào thao tác làm việc riêng, sau khi ngừng việc bạn có nhu cầu ra khỏi nhà hay đi lượn lờ đâu đó thì nên khóa cửa lại!Hàm để ngắt kết nối (đóng database lại) : mysql_close(); ko cần thông số kỹ thuật bên trongCấu trúc nắm tắt như sau:Code PHP:
mysql_connect("localhost","root",""); mysql_select_db("khoailang");// thao tác làm việc riêng bên trên CSDL//…mysql_close(); // kết thúc việc rồi thì khóa cơ sở dữ liệu 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 trong những thông số trên cơ mà sai thì các bạn sẽ bị báo lỗi!

Lấy dữ liệu

Thường thường sau thời điểm đã bao gồm một website (và bao gồm CSDL) thì mình đề xuất nhập csdl vào, sau đó đọc csdl và truy tìm xuất dữ liệu mà mình bắt buộc dùng.Bây tiếng tôi đang hướng dẫn các bạn làm sao để đọc dữ liệu, còn câu hỏi ghi dữ liệu tôi sẽ nói sau.Nhưng để đọc cơ sở dữ liệu thì trước tiên mình cần được có sẵn một CSDL khá đầy đủ để nhưng mà đọc chứ nhỉ, không có gì cả thì lấy gì mà lại đọc?!May cho chúng ta là hôm nay tôi khá bị siêng năng, yêu cầu đã sẵn sàng sẵn cho chúng ta một bảng tài liệu về clip games (jeux_videos trong giờ Pháp). Chúng ta hãy tải bảng này về trước đã:
File gồm phần không ngừng mở rộng là .sql chúng ta định mở tệp tin ra để đọc hả ? Nói nhỏ tuổi nghe nè : chả bao gồm gì thú vị để đọc trong các số đó đâu, chỉ là một trong đám rừng toàn là text.Việc nên làm bây chừ là nạp cái bảng này vào PHPMyAdmin. Hãy theo trình tự dưới đây nhé :Mở PhpMyAdmin
ra,Chọn csdl test trong menu đổ xuống bên 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 ra, bạn hãy đi tìm nơi để file jeux_videos.sql mà chúng ta đã sở hữu hồi nãy, nhấp chọn nóCuối cùng, nhấp exécuter (execute) hoàn thành rồi , bạn sẽ thấy mặt trái, bên dưới Test có một bảng mới mở ra tên là jeux_videos đấy!Nếu chúng ta 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 ra mặt phải, sau đó là 5 dòng đầu tiên 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 thay đổi gì tấm biển này nhé !
Mục đích của chúng ta hiện nay là : viết một trang php cho phép in ra toàn bộ dữ liệu đựng trong bảng trên !Viết một query Đã cho hồi đặc biệt quan trọng của buổi học hôm nay rồi, hiện giờ mình đang yêu ước MySQL làm vài sản phẩm bằng ngôn ngữ SQL. Viết một yêu cầu gọi là tiến hành một query . Mình vẫn nhờ MySQL in ra văn bản của cái biển trò đùa điện tử (jeux_videos) nhưng hồi nãy mình có kiến nghị bạn tải 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 (bằng ngôn ngữ SQL)Hàm này trả về một giá bán trị, bởi vậy mình rất cần được có một biến để chứa đầy đủ gì mà lại MySQL trả lời.Mình luôn luôn viết như vậy này :Code PHP:
$traloi chứa hầu hết gì mà lại MySQL vấn đáp theo 1-1 yêu ước của mình.Bây giờ chúng ta hãy xem làm sao để hỏi MySQL mọi gì có trong bảng jeux_videos nhé.

Xem thêm: Hướng Dẫn Cài Đặt Https Cho Webserver Iis Trên Windows, Cài Đặt Chứng Chỉ Ssl

Query SQL đầu tiên của chúng ta Như đã nói, SQL là một trong ngôn ngữ có thể chấp nhận được mình tiếp xúc với MySQL, đấy là query SQL trước tiên :Code SQL :
Dòng này rất có thể hiểu là : chọn tất cả các tài liệu trong bảng jeux_videos.Mình thuộc phân tích vài từ khóa trong này nhé :SELECT : trong ngôn từ SQL, việc thứ nhất là mình phải xác minh kiểu (loại) làm việc mà bản thân sẽ làm với MySQL. Ở chương này chúng ta chỉ xem mỗi một làm việc CHỌN thôi (SELECT). SELECT cho phép hiển thị toàn bộ nội dung trong một bảng.* : ngay lập tức sau SELECT, bọn họ phải khẳng định rằng chúng ta muốn lấy dữ liệu trong cột (trường, fields) nào. Vệt * ám chỉ "lấy hết mang lại tao ! ko chừa lại máy gì cả! ». Giả sử bạn muốn chọn cột "nom" (tên) và "possesseur" (người sở hữu) thì các bạn gõ : SELECT nom, possesseur FROM jeux_videos FROM là 1 trong từ nối (từ liên kết), ý nói "ở trong" cái biển nào ! Sau FROM mình sẽ đã cho thấy tên của tấm biển mà mình thích lấy dữ liệu. Jeux_videos đó là tên của tấm bảng mà mình muốn lấy tài liệu !Mổ xẻ xong rồi, bây chừ mình hãy để lá 1-1 này vào hàm mysql_query đi ! Code PHP :

$traloi=mysql_query("SELECT * FROM jeux_videos") ;?>
Thế là vươn lên là $traloi của mình hiện nay đã đựng câu trả lời của MySQL rồi đấy!
Cool, bây chừ làm sao in công dụng ra đây?
In (hiển thị) tác dụng của một queryVấn đề là cái đổi thay $traloi của chính mình chứa một thứ gì đó không thể bung ra được, tức thị không hệt như một biến thông thường chứa số hay đựng text mà mình hoàn toàn có thể dùng lệnh echo để in ra, cơ mà nó đựng một thứ vô cùng hỗn độn vô độc thân tự.Bạn tưởng tượng nếu loại bảng của mình có 10 cột, 200 dòng, thì cái phát triển thành $traloi cất 2000 thông tin! hiện nay làm sao lấy ra 2000 tin tức đó đây? Loại thay đổi nào lại có kiểu bảng y hệt như vậy nhỉ? từ "cái bảng" giúp tôi nhớ mang lại Array! PHP tất cả sẵn một hàm giúp tạo ra một array trường đoản cú $traloi: mysql_fetch_array($traloi)Đây là một mảng kiểu bảng kết hợp (kiểu trước tiên là bảng đánh số như tôi đã học sống chương Array rồi đấy), nếu bạn muốn lấy dữ 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<"console"> ($dulieu là một trong những biến array luôn đấy)Tiếp theo, mình đề nghị 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, bạn sẽ truy nhập vào hàng sau đó của bảng. Vòng lặp sẽ tự động lặp lại đến đến khi nào không còn hàng nào nữa vào bảng của bản thân thì thôi. Đây là điểm tiện lợi khi mình lần chần bảng của chính bản thân mình có từng nào hàng!Đây là tất cả những gì tôi đã làm để in ra văn bản của mẫu bảng:Code PHP:

mysql_connect("localhost","root",""); //đăng nhập vào CSDLmysql_select_db("khoailang"); // lựa chọn CSDL // viết đối chọi 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<"nom">;?>Tên fan sỡ hữu echo $dulieu<"possesseur">;?> với nó cung cấp trò này với giá : echo $dulieu<"prix">;?> dollarsTrò đùa này hoạt động trên nền: echo $dulieu<"console">;?> và mình có thể chơi cùng lúc echo $dulieu<"nbre_joueurs_max">; ?> người maximum. Thằng echo $dulieu<"possesseur">;?> đã đánh giá trò echo $dulieu<"nom">;?> là : echo $dulieu<"commentaires">;?>

mysql_close();?>
Bạn nhìn thấy gì? Nó in ra khoảng chừng 50 kết quả, không gì lạ chính vì cái bảng của mình chứa khoảng tầm 50 hàng mà.

Xem thêm: Hướng Dẫn Cách Làm Lượt Theo Dõi Trên Facebook, 9 Cách Tăng Lượt Theo Dõi Trên Facebook


$traloi là 1 biến chứa câu trả lời của MySQL, là 1 mớ láo độn vô trơ tráo tự gồm kiểu dữ liệu là resource (hiếm chạm mặt từ này). Nhờ vào hàm mysql_fetch_array mà mình tạo ra mảng $dulieu ! Mảng này cất 1 cái trong bảng tài liệu của mình, khi mình sử dụng hàm mysql_fetch_array một lần nữa thì mảng $dulieu sẽ cất hàng thứ 2 trong bảng dữ liệu. Tưởng tượng nạm này nhé :Lần đầu tiên gọi : $dulieu= mysql_fetch_array($traloi) ; Thì $dulieu tất 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
chất nhận được 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 với có kết cấu như trên !
Vậy đó! Bây giờ bạn cũng có thể cho in ra bất cứ thứ gì các bạn muốn, không có bất kì ai ép chúng ta phải in ra cả tấm biển đâu, ví dụ chúng ta cũng 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<"nom"> ; $dem++ ; ?> mysql_close() ;?>
Lỗi lầm vây kín …Khi một query SQL của người sử dụng bị treo, thường thì PHP đang báo là gồm lỗi ở dòng chứa hàm mysql_fetch_array
. Điều này thực tế không đúng mực đâu, hoàn toàn có thể bạn đã biết thành lỗi đâu đó bên trên kia, chứ không hề phải đúng đắn tại dòng mysql_fetch_array đâu. Để biết rõ cụ thể lỗi gì, sinh hoạt đâu, bạn nên tập thói quen chèn thêm mẫu này vào cùng cái với mysql_query nhé : or die(mysql_error());Ví dụ cùng với trường phù hợp mình đang làm cho :
Dòng code vừa tiếp tế sẽ không làm cái gi cả trường hợp bạn không có lỗi, trái lại nếu tất cả lỗi đâu đó, nó sẽ báo cho khách hàng biết cụ thể hơn!

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

Ở đây chúng ta chỉ vồ cập tới những query query SQL thôi. Bạn sẽ thấy, bằng cách thay đổi đk và tiêu chuẩn chỉnh chọn lựa, mình rất có thể sắp xếp tài liệu một cách gọn gàng ngăn nắp dễ dàng dàng!Các từ bỏ 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 mà mình để ra. Chẳng hạn hiện giờ mình chỉ muốn mang ra các trò nghịch của Patrick (trong bảng jeux_videos), query của bản thân sẽ thêm WHERE possesseur="Patrick" vào sau từ bỏ khóa FROM:Code SQL:
Dòng này được gọi là : chọn toàn bộ các cột vào bảng jeux_videos sao cho cột possesseur đựng 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ò đùa echo $dulieu<"nom">;?> là của echo $dulieu<"possesseur">;?> mysql_close() ;?>
Nếu thích chúng ta cũng có thể thay thay đổi một chút, chẳng hạn bạn muốn xem toàn bộ trò đùa của Michel, các bạn hãy thay WHERE possesseur="Patrick" bằng 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 gần như trò nào của Patrick cơ mà nó xuất kho với giá tốt hơn 20 dollars :Code SQL :

SELECT * FROM jeux_videos WHERE possesseur="Patrick" and prixORDER BYORDER BY mang lại phép bọn họ sắp xếp lại tác dụng thu được cho có trật tự! ví dụ điển hình mình sẽ bố trí lại bảng trò chơi điện tử jeux_videos theo trang bị tự tăng ngày một nhiều của túi tiền (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<"nom"> giá chỉ $dulieu<"prix"> dollars";echo "" ;mysql_close() ;?>
giả dụ tớ muốn sắp xếp theo sản phẩm công nghệ tự giảm dần thì sao ?
Thì thêm DESC
vào cuối dòng lệnh SQL trên :Code SQL :
SELECT * FROM jeux_videos ORDER BY prix DESC
Nếu bọn họ thực hiện tại việc sắp xếp thứ tự cho 1 cột chứa text, thì text đó sẽ được sắp xếp theo chủng loại tự ABC
LIMITLIMIT mang lại phép họ giới hạn được công dụng xuất ra, chẳng hạn chúng ta chỉ đề xuất lấy đôi mươi dòng trước tiên ra thôi thì họ sẽ thêm tự LIMIT vào thời gian cuối query, hẳn nhiên 2 bé số, phân làn bằng vết phẩy:Code SQL:
Đầu tiên, số 0 chỉ ra rằng MySQL sẽ đọc dữ liệu kể từ hàng số 0 (tức hàng lắp thêm 1), phương pháp đánh số của nó giống như cách viết số trong mảng vậy! Số thiết bị 2 cho biết SỐ LƯỢNG hàng rất cần được đọc! Ở phía trên nó đã đọc từ sản phẩm số 0 đến hàng số 19 nhằm được đôi mươi hàng!Ví dụ, ví như mình đặt:LIMIT 0,10: in ra 10 số 1 tiên (từ hàng máy 1 đến hàng thiết bị 10) LIMIT 5,10: in ra 10 hàng, trường đoản cú hàng thiết bị 6 mang đến hàng sản phẩm công nghệ 15LIMIT 10,2: in ra 2 hàng, trường đoản cú hàng thứ 11 mang lại hàng vật dụng 12
Cuc cu! Xin chào! Tớ là người thích cảm giác mạnh, cho 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 nãy tiếng vào cùng một loại query tốt nhất được không ?
Nghe kĩ đây các bạn !
*
Đây là món tả pín lù mà chúng ta vừa kiến nghị nè :Code SQL :

SELECT nom, possesseur, console, prix FROM jeux_videos WHERE console="Xbox" OR console="PS2" ORDER BY prix DESC LIMIT 0,10
các bạn phải sử dụng những từ khóa về tiêu chuẩn lựa chọn theo trang bị tự nhưng mà tôi ghi bên trên đây, tức là WHERE rồi mới tới ORDER BY rồi new tới LIMIT, nếu không thì MySQL sẽ thiếu hiểu biết đâu !
Bạn thử dịch ngữ điệu SQL trên đây sang giờ đồng hồ Việt demo xem ! Rồi demo thử dùm tôi nhé ! Tôi lười quá đề xuất chưa test!

Đếm số hàng trong bảng dữ liệu

Trước khi chấm dứt chương này, mình hãy thử làm cho một đụng tác mà nhiều khi cũng thú vị: đếm số hàng trong bảng dữ liệu! Ví dụ bạn có thể ghi ra câu "Tạm thời có 50 trò chơi được bán" nếu bạn đếm được rằng tất cả 50 hàng (mỗi hàng tương xứng với một trò chơi) trong bảng jeux_videos!Để đếm, mình sử dụng code như sau:Code PHP:

mysql_connect("localhost","root","");mysql_select_db("khoailang");$traloi=mysql_query("SELECT COUNT(*) AS so_hang FROM jeux_videos");$ketqua=mysql_fetch_array($traloi);echo "Tổng cộng bao gồm $ketqua<"so_hang"> trò chơi đang được bán!";mysql_close();?>
Từ khóa COUNT
dùng để làm đếm xem tất cả bao nhiêu hàng trong bảng jeux_videos rồi tạo ra giá trị vào mảng $ketqua<"so_hang">Bạn cũng rất có thể thêm tiêu chuẩn lựa chọn vào query trên, chẳng hạn đếm xem gồm bao nhiêu trò nghịch của Florent chẳng hạn! demo xem!