PHP chỉ hoạt động với mysql
Order у
Bản tóm tắt:
1. Mục đích của PDO: Lớp PDO trong PHP được sử dụng để xử lý mọi vấn đề có thể xảy ra trong các truy vấn cơ sở dữ liệu bằng cách ném các ngoại lệ.
2. Trang xác minh: Trang xác minh được hiển thị khi lưu lượng truy cập đáng ngờ được phát hiện từ mạng của người dùng. Nó giúp Google xác định xem các yêu cầu đến từ con người hay robot.
3. Lý do cho trang xác minh: Trang được hiển thị khi các hệ thống tự động phát hiện các yêu cầu đi vi phạm các điều khoản dịch vụ của Google. Nó ngừng hiển thị khi các yêu cầu chấm dứt.
4. Nguồn yêu cầu: Các yêu cầu có thể bắt nguồn từ phần mềm độc hại, phần mở rộng trình duyệt hoặc tập lệnh được thiết lập để truy vấn tự động. Nếu sử dụng kết nối Internet được chia sẻ, sự cố có thể là do một máy tính khác có cùng địa chỉ IP.
5. Xác minh: Xác minh từ có thể xuất hiện nếu các truy vấn phức tạp hoặc thường xuyên được nhập, thường được tạo bởi các hệ thống tự động.
6. Tham số tùy chọn trong các hàm MySQL: Hầu hết các chức năng MySQL có thể chấp nhận link_identifier dưới dạng tham số tùy chọn. Nếu không được cung cấp, kết nối mở cuối cùng được sử dụng.
7. Vai trò của $ dblink: Biến $ dblink giữ kết nối với máy chủ MySQL.
số 8. Tập lệnh chênh lệch dữ liệu: Một tập lệnh được tạo để kiểm tra chênh lệch dữ liệu giữa hai bảng có cùng cấu trúc.
9. Hạn chế của tập lệnh chênh lệch dữ liệu: Cấu trúc của cả hai bảng phải giống nhau, tên bảng phải khác nhau (hoặc trong các cơ sở dữ liệu khác nhau) và các quyền cho cả hai cơ sở dữ liệu phải giống nhau.
10. Sử dụng tập lệnh khác biệt dữ liệu: Tập lệnh rất hữu ích khi thực hiện các thay đổi đối với tập lệnh hiện có và muốn so sánh tác động của những thay đổi đó.
Câu hỏi và câu trả lời:
1. Mục đích của PDO là gì?
PDO được sử dụng để xử lý bất kỳ vấn đề nào có thể xảy ra trong các truy vấn cơ sở dữ liệu bằng cách ném các ngoại lệ.
2. Trang được hiển thị khi nào?
Trang xác minh được hiển thị khi lưu lượng truy cập đáng ngờ được phát hiện từ mạng của người dùng.
3. Tại sao trang xác minh xuất hiện?
Trang xuất hiện khi các yêu cầu gửi đi từ mạng của người dùng vi phạm Điều khoản dịch vụ của Google. Nó dừng hiển thị khi các yêu cầu dừng.
4. Các nguồn yêu cầu có thể là gì?
Các yêu cầu có thể đến từ phần mềm độc hại, phần mở rộng trình duyệt hoặc tập lệnh được thiết lập để truy vấn tự động. Nếu sử dụng kết nối Internet được chia sẻ, một máy tính khác có cùng địa chỉ IP có thể là nguồn.
5. Khi nào xác minh từ xuất hiện?
Xác minh từ xuất hiện khi các truy vấn phức tạp hoặc thường xuyên được nhập, thường được tạo bởi các hệ thống tự động.
6. Mục đích của biến $ dblink là gì?
$ dblink giữ kết nối với máy chủ MySQL.
7. Những hạn chế của tập lệnh chênh lệch dữ liệu là gì?
Cấu trúc của cả hai bảng phải giống nhau, tên bảng phải khác nhau (hoặc trong các cơ sở dữ liệu khác nhau) và các quyền cho cả hai cơ sở dữ liệu phải giống nhau.
số 8. Khi nào tập lệnh chênh lệch dữ liệu hữu ích?
Tập lệnh rất hữu ích khi thực hiện các thay đổi đối với tập lệnh hiện có và muốn so sánh tác động của những thay đổi đó.
9. Tập lệnh khác biệt dữ liệu hoạt động như thế nào?
Tập lệnh so sánh dữ liệu giữa hai bảng có cùng cấu trúc bằng cách truy vấn các bảng và phân tích sự khác biệt.
10. Làm thế nào người dùng Windows có thể áp dụng các thay đổi cho biến đường dẫn?
Nếu Apache được cài đặt dưới dạng dịch vụ và biến đường dẫn được thay đổi để đạt được libmysql.DLL, máy cần được khởi động lại cho các thay đổi có hiệu lực.
11. Làm thế nào dữ liệu MySQL có thể được bảo mật?
Để bảo mật dữ liệu MySQL và tuân thủ các tiêu chuẩn PCI, mã hóa có thể được áp dụng. Các công cụ như DM-Crypt, Tổng bảo mật cho MYSQL hoặc mã hóa đĩa được cung cấp bởi hệ điều hành có thể được sử dụng.
12. Vai trò của chức năng Table_Data_Difference là gì?
Chức năng Table_Data_Difference được sử dụng để kiểm tra chênh lệch dữ liệu giữa hai bảng có cùng cấu trúc.
13. Vai trò của các tham số $ đầu tiên và $ thứ hai trong chức năng Table_Data_Difference là gì?
$ Thứ nhất và $ Second đại diện cho tên của hai bảng cần được so sánh với sự khác biệt về dữ liệu.
14. Làm thế nào để chức năng Table_data_difference truy xuất tên trường từ bảng?
Hàm sử dụng các trường hiển thị từ truy vấn để truy xuất tên trường từ bảng được chỉ định.
15. Làm thế nào để chức năng Table_data_difference so sánh dữ liệu giữa hai bảng?
Hàm chọn tất cả các hàng từ bảng thứ nhất và xây dựng một truy vấn để chọn các hàng từ bảng thứ hai phù hợp với các giá trị của các trường trong hàng hiện tại của bảng đầu tiên. Bất kỳ bản ghi chưa từng có nào được hiển thị.
Order у
Mẹo: Một lợi ích lớn của PDO là nó có một lớp ngoại lệ để xử lý mọi vấn đề có thể xảy ra trong các truy vấn cơ sở dữ liệu của chúng tôi. Nếu một ngoại lệ được ném vào trong thử < >chặn, tập lệnh dừng thực thi và chảy trực tiếp đến lần bắt đầu tiên () < >khối.
PHP chỉ hoạt động với mysql
О
Ы о о. О о. Ч?
Э к о н. С cổng. Các л л.
И ыуу запр®. Е. О. Подробнее.
П емама, и и и и и.
Order у
З trục:
Б. Е. Е.ini . В SAI . SAI .
Người dùng đóng góp Ghi chú 38 Ghi chú
15 năm trước
# Có thể liên lạc với Dhirendra được tạo ra tại Dhirendrak tại Yahoo Dot Com
# Tập lệnh này được tạo để kiểm tra chênh lệch dữ liệu giữa hai bảng
# Khi cấu trúc của cả hai bảng giống nhau.
# Giới hạn:
# 1) Cấu trúc của cả hai bảng phải giống nhau.
# 2) Tên của cả hai bảng phải khác nhau nhưng nếu giống nhau
# Bảng thứ hai phải là nếu cơ sở dữ liệu khác nhau.
# 3) Nếu sử dụng hai cơ sở dữ liệu so với cả hai quyền cơ sở dữ liệu phải giống nhau
# vì tôi đang sử dụng bí danh để lấy thông tin.
#
# Sử dụng ::
# 1) Điều này có thể hữu ích khi bạn thực hiện một số thay đổi trong
# tập lệnh và bạn mong đợi đầu ra nhất định. Vì vậy, với sự giúp đỡ của điều này
# chức năng Bạn có thể so sánh tác động do những thay đổi của bạn trong tập lệnh.
#
#
?php
$ host = “”; # Tên máy chủ hoặc địa chỉ IP
$ user = “”; # Tên người dùng cơ sở dữ liệu
$ pass = “”; # Mật khẩu cơ sở dữ liệu
$ cơ sở dữ liệu = “”; # tên DataAbase mà bạn muốn kết nối
# Nhận kết nối với MySQL
$ dblink = @ mysql_connect ($ host, $ user, $ pass);
# Chọn và mở cơ sở dữ liệu
mysql_select_db (cơ sở dữ liệu $, $ dblink);
$ db1 = “< your db1 >“; // cơ sở dữ liệu đầu tiên
// cơ sở dữ liệu thứ hai nếu cơ sở dữ liệu giống nhau cho cả hai bảng hơn là sử dụng giống như db1
$ db2 = “< your db2 >“;
$ Bảng1 = “< your table1 >“; // Bảng đầu tiên
// Bảng thứ hai nếu cơ sở dữ liệu giống nhau cho cả hai bảng so với tên bảng
# phải khác nhau nhưng tên trường giống nhau và thứ tự của các trường giống nhau.
// chức năng bắt đầu ở đây
function tabl
Toàn cầu $ dblink;
$ SQL1 = “Hiển thị các trường từ $ đầu tiên”;
$ result = mysql_query ($ sql1, $ dblink) hoặc die (“có lỗi trong thực thi 1 = từ khóa”>. mysql_error ());
while ($ row = mysql_fetch_object ($ result))
<
$ from_fields [] = $ row -> trường;
>
$ sql = “Chọn * từ $ đầu tiên”;
$ res = mysql_query ($ sql, $ dblink) hoặc die (“có lỗi trong thực thi 2 = từ khóa”>. mysql_error ());
$ j = 1;
while ($ row = mysql_fetch_array ($ res))
$ num = đếm ($ từ_fields);
$ sql_next = “Chọn $ Second .* từ $ thứ hai trong đó “;
for ($ i = 0; $ i < $num ; $i ++)
$ sql_next = $ sql_next . “” . $ thứ hai . “.” . $ from_fields [$ i]. “= ‘” . $ row [$ from_fields [$ i]]. “‘ Và ” ;
>
$ SQL_NEXT = SUBSTR ($ SQL_NEXT, 0, STRLEN ($ SQL_NEXT)- 5);
$ res_next = mysql_query ($ sql_next, $ dblink) hoặc die (“có lỗi trong thực thi 3 = từ khóa”>. mysql_error ());
$ num1 = mysql_num_rows ($ res_next);
if ($ num1 == 0)
for ($ i = 0; $ i < count ( $from_fields ); $i ++)
$ val = $ val . “
” . $ from_fields [$ i]. “Từ khóa”>. $ row [$ from_fields [$ i]];
>
// hiển thị bản ghi không khớp.
tiếng vang “
\N” . $ j . “.” . $ val;
tiếng vang “
—————————————————–“;
$ j ++;
>
$ đầu tiên = $ db1 . ‘.’ . $ Bảng1;
$ second = $ db2 . ‘.’ . $ Bảng 2;
Table_Data_Difference ($ đầu tiên, $ giây);
16 năm trước
Đối với người dùng Windows, xin lưu ý:
Nếu apache được cài đặt dưới dạng dịch vụ và bạn thay đổi biến đường dẫn để nó có thể đạt đến libmysql.DLL, bạn sẽ cần khởi động lại máy của mình để có các thay đổi được áp dụng.
15 năm trước
Ngoài ra, để bảo mật dữ liệu MySQL và để có thể tuân thủ các tiêu chuẩn PCI, bạn nên mã hóa dữ liệu. Có rất nhiều cách để làm điều đó. Đối với tin tặc, bạn có thể sử dụng dm-crypt (www.Saout.DE/MISC/DM-CRYPT) Công cụ. Về cơ bản nó được sử dụng để mã hóa toàn bộ phân vùng. Nếu bạn muốn một giải pháp tinh vi, hãy với tổng bảo mật cho MySQL từ Gói General (www.GóiGeneral.com)
Trên Windows, bạn có thể sử dụng tính năng mã hóa đĩa được cung cấp bởi chính Windows hoặc công cụ như Trucrypt (www.TrueCrypt.org)
15 năm trước
@Amanda 12-tháng 10-2007 09:58
Tôi gần như phải tự hỏi mình nếu đây là một câu hỏi thực sự. Nếu máy chủ MySQL từ chối nỗ lực kết nối thì có, MySQL sẽ có thể gửi lại lỗi cho PHP. Và nếu PHP không thể truy cập máy chủ MySQL đích thì nó cũng đủ thông minh để tự đưa ra lỗi thích hợp.
17 năm trước
Nếu bạn muốn làm cho PHP hoạt động tốt với MySQL, ngay cả với Apache, trong các hệ thống dựa trên Windows, hãy thử XAMPP, từ Apache Friends. Nó tiết kiệm lộn xộn với các tệp config, đây là vấn đề lớn duy nhất với việc cố gắng khiến cả ba làm việc cùng nhau trong Windows.
17 năm trước
Một lưu ý về tài nguyên
Khi một tài nguyên (e.g. một định danh liên kết) hết phạm vi, nó bị xóa và tài nguyên máy tính liên quan (e.g. Liên kết TCP đến cơ sở dữ liệu) cũng sẽ bị chấm dứt. Càng xa càng tốt!
Tuy nhiên, trong mã sau, liên kết TCP MySQL vẫn tồn tại cho đến khi kết thúc thực thi:
$ Conn = mysql_connect (‘tên máy chủ’, ‘tên người dùng’, ‘mật khẩu’);
$ Conn = null;
ngủ (30);
?>
Điều này là do nội bộ, trình nhận dạng liên kết đang được lưu, do đó các chức năng MySQL tiếp theo sẽ hoạt động. Dường như không có cách nào để xóa tham chiếu nội bộ này.
Tuy nhiên, nếu bạn mở 2 kết nối, hệ thống cũ nhất sẽ bị xóa tự động (vì vậy kết nối với tên máy chủ sẽ chấm dứt tại câu lệnh $ Conn = null, kết nối với hostName2 sẽ tồn tại cho đến khi kết thúc tập lệnh).
$ Conn = mysql_connect (‘tên máy chủ’, ‘tên người dùng’, ‘mật khẩu’);
$ Conn2 = mysql_connect (‘hostName2’, ‘tên người dùng’, ‘mật khẩu’);
$ Conn = null;
$ Conn2 = null;
ngủ (30);
?>
17 năm trước
Tôi sử dụng IIS 6, PHP 5.04, Windows Server 2003 và MySQL 4.1.11. Và đây là những gì tôi đã có thể tìm ra.
Để cho MySQL và PHP nói chuyện với nhau, trong PHP.CFG, đừng quên bật thẻ
CGI.Force_Redirect = 0 và đảm bảo bạn đặt nó ở 0 (nó là mặc định ở mức 1. Chỉ cần xóa bán đại tá từ phía trước nó để kích hoạt nó trong mã) thì phpinfo sẽ nói rằng việc đọc CFG từ thư mục cài đặt PHP của bạn thay vì root windows của bạn. Sau đó, PHPINFO của bạn sẽ hiển thị mục MYSQL rằng một số người có thể gặp khó khăn với. Không có cài đặt đăng ký hoặc sao chép bất cứ điều gì là cần thiết. Cũng theo dõi phần còn lại của sự trợ giúp tuyệt vời từ các bình luận của người dùng. Đây là những gì tôi đã làm, để làm cho nó đơn giản:
Tôi đã tạo một thư mục trong cây thư mục ngay phía trên các tệp chương trình (khám phá máy tính của bạn) và đặt tên nó là PHP. Tôi trích xuất .phiên bản ZIP PHP vào nó (không phải phiên bản cài đặt tự động). Tôi đã chỉnh sửa PHP.INI-được đề xuất, đổi tên nó thành chỉ PHP, thêm tên người dùng SQL của tôi, tên cơ sở dữ liệu, v.v.(Bạn thực sự phải nhìn kỹ vào tệp CFG và đảm bảo bạn không bỏ qua điều gì đó). Đã bật tiện ích mở rộng = php_mysql.DLL (chỉ cần xóa bán đại tá trước mặt nó). Đã thêm thư mục PHP vào đường dẫn (hướng dẫn về cách thực hiện việc này khá đơn giản và được ghi lại ở trên). Tôi cũng đã cung cấp thư mục ext cho đường dẫn, nhưng tôi không chắc nó có thực sự cần thiết không. Các bình luận của người dùng là những gì thực sự đã giúp tôi, vì vậy tôi nghĩ rằng tôi sẽ trả lại sự ủng hộ và cố gắng mở rộng về chủ đề này một chút.
18 năm trước
Vấn đề fedora mysql!!
Trong fedora 3, mô -đun php mysql không đi kèm với cài đặt mặc định. Để cài đặt nó, hãy sử dụng $> yum cài đặt php_mysql
Nếu bạn không làm điều này, bạn sẽ gặp lỗi với các chức năng mysql như mysql_connect ()
Hi vọng điêu nay co ich!
18 năm trước
Nếu bạn muốn sao chép đầu ra của `mysql – -html`, hãy in kết quả của bạn trong bảng HTML, hãy xem chức năng này:
21 năm trước
Xin chào, đây là một mẹo nhỏ hay để chọn các bản ghi theo thứ tự ngẫu nhiên từ bảng trong cơ sở dữ liệu MySQL trước phiên bản 3.23
Chọn *, (itemId/itemId) *rand () làm myrandom từ các mục đặt hàng của myrandom
[Biên tập viên Lưu ý: Và chỉ “Chọn * từ Foo Order by rand ()” sau 3.23]
15 năm trước
Sau khi cuối cùng nhận được IIS, PHP và MySQL trên máy Windows XP mới, tôi đã quyết định viết các bước tôi thực hiện để bạn có thể thấy nó đã được thực hiện như thế nào: http: // www.Atksolutions.com/bài viết/install_php_mysql_iis.HTML
Hi vọng điêu nay co ich.
15 năm trước
/*
Cài đặt máy chủ MySQL (Cộng đồng) trên Windows XP 32 bit đang chạy Apache
?php
Trên Windows, cách được khuyến nghị để chạy MySQL là cài đặt nó dưới dạng dịch vụ Windows, theo đó MySQL bắt đầu và dừng tự động khi Windows bắt đầu và dừng. Máy chủ MySQL được cài đặt dưới dạng dịch vụ cũng có thể được điều khiển từ các lệnh dòng lệnh hoặc với tiện ích dịch vụ đồ họa như phpmyadmin.
Php —> Đầu nối MySQL (PHP_MYSQL.DLL và PHP_MYSQLI.DLL làm phần mở rộng)
MySQL cung cấp tiện ích mở rộng MySQL và MySQLI cho hệ điều hành Windows trên http: // dev.mysql.com/tải xuống/đầu nối/php/cho mysql phiên bản 4.1.16 trở lên, MySQL 5.0.18 và MySQL 5.1. Như với việc cho phép bất kỳ tiện ích mở rộng PHP nào trong PHP.ini (chẳng hạn như PHP_MYSQL.dll), phần mở rộng chỉ thị php_dir phải được đặt thành thư mục nơi đặt các phần mở rộng PHP.
MySQL không còn được bật theo mặc định, vì vậy PHP_MYSQL.DLL DLL phải được bật bên trong PHP.ini. Ngoài ra, PHP cần truy cập vào thư viện máy khách MySQL. Một tệp có tên libmysql.DLL được bao gồm trong phân phối Windows PHP và để PHP nói chuyện với MySQL tệp này cần có sẵn cho đường dẫn Windows Systems.
Tập lệnh PHP sau rất hữu ích để kiểm tra kết nối PHP với MySQL.
*/
// $ kết nối = mysql_connect (“Tên máy chủ của bạn”, “Thư mục gốc MySQL”, ‘mật khẩu MySQL, nếu có’);
// $ kết nối = mysql_connect (“Tên hoặc địa chỉ máy chủ – 127.0.0.1 “,” root “, ‘mật khẩu’);
$ Connect = MySQL_Connect (“LocalHost”, “Root”, ‘Mật khẩu’);
Nếu ($ kết nối) Echo “Xin chúc mừng!\N
“;
Echo “kết nối thành công với máy chủ cơ sở dữ liệu MySQL.\N
“;
> other $ error = mysql_error ();
echo “không thể kết nối với cơ sở dữ liệu. Lỗi = $ Lỗi .\N
“;
lối ra();
>
// Kết nối đóng
$ đóng = mysql_close ($ kết nối);
if ($ đóng) echo “\ n
“;
Echo “Bây giờ đóng kết nối. \N
“;
Echo “Kết nối MySQL cũng đóng thành công.\N
“;
> Elseecho “Có một vấn đề trong việc đóng kết nối MySQL.\N
“;
>
lối ra();
?>
16 năm trước
Tôi đã thực hiện chức năng này để giảm các cuộc gọi DB. Bạn có thể lưu trữ kết quả MySQL trong phiên VAR và sắp xếp kết quả trên bất kỳ cột nào. Có thể hoạt động tốt trong một ứng dụng ajax.
hàm mysql_sort ($ results, $ sort_field, $ dir = “asc”) $ temp_array = mảng ();
$ i = 0;
foreach ($ kết quả là $ res) $ temp_array [$ i] = $ res [$ sort_field];
$ i ++;
>
if ($ dir == “ASC”) asort ($ temp_array);
> other Arsort ($ temp_array);
>
$ new_results = mảng ();
$ i = 0;
foreach ($ temp_array là $ k => $ v) $ new_results [$ i] = $ kết quả [$ k];
$ i ++;
>
ksort ($ new_results);
trả lại $ new_results;
//sử dụng
if (đếm ($ _ phiên [“res”]) == 0) $ _session [“res”] = [Nhận kết quả cơ sở dữ liệu tuy nhiên bạn có thể]
>
$ _Session [“res”] = mysql_sort ($ _ phiên [“res”], $ _Request [“sort”], $ _Request [“dir”]);
17 năm trước
John Coggeshall đã viết một tập lệnh tương thích PHP5 ext/mysqli cho các ứng dụng vẫn sử dụng các chức năng ext/mysql cũ. Điều này ngăn cản sự rắc rối của việc cố gắng có cả phần mở rộng MySQL và MySQLI được tải trong PHP5, có thể khó khăn.
17 năm trước
Kích hoạt MySQL với Windows Server 2003/IIS 6.0:
Tìm PHP của bạn.Tệp INI trước, kiểm tra phpinfo () để xem PHP hiện đang tìm kiếm PHP ở đâu.ini. (Tôi.e. Sử dụng Trình cài đặt Windows cho Php 5.0.4, PHP.Tệp INI được đặt trong C: \ Windows Dir.) Tôi khuyên bạn nên sử dụng trình cài đặt – đi với cài đặt thủ công đầy đủ.
Đặt phần sau trong PHP.Ini:
display_errors = ON
error_Reporting = e_all
Điều này sẽ đảm bảo rằng bạn sẽ thấy bất kỳ lỗi nào phát sinh trong quá trình cấu hình. Đảm bảo sửa những điều này khi bạn đã chơi xong với PHP.Ini! Không để các cài đặt này như thế này trên máy sản xuất.
Trong PHP.Ini đặt như sau:
extension_dir = “pathToExtensions (ususally [yourPathTophp] \ ext)”
Tiện ích mở rộng = PHP_MYSQL.DLL (đảm bảo điều này chưa được thông qua nếu nó đã có trong PHP của bạn.ini)
Trong IIS, mở các tiện ích mở rộng dịch vụ web, nhấp vào “Thêm tiện ích mở rộng dịch vụ web mới. “
Nhập PHP cho tên mở rộng
Trong các tệp bắt buộc:
Thêm [yourpathtophp] \ php5isapi.DLL
Thêm [yourpathTophp] \ php5ts.DLL
Nhấp vào ‘Áp dụng’ sau đó nhấp vào ‘OK’
Tạo các trang web như bạn thường làm, nhưng đảm bảo rằng chúng có quyền thực thi, không chỉ là truy cập tập lệnh. Trong tab “Thư mục gia đình”, nhấp vào ‘Cấu hình’. Cuộn xuống danh sách ở trên cùng và xem liệu bạn có thể tìm thấy PHP không. Nếu bạn làm như vậy, hãy đảm bảo đường dẫn đến thực thi cho PHP là chính xác. Nếu bạn không tìm thấy PHP trong danh sách, nhấp vào ‘Thêm. ‘, sau đó duyệt đến thực thi chính xác, [yourpathTophp] \ php5isapi.DLL và bấm OK. Trong trường mở rộng, nhập ‘PHP’. Động từ nên được đặt thành ‘tất cả các động từ’, hãy để nó như vậy.
Tạo một trang kiểm tra với mã này:
Gọi nó là kiểm tra.PHP và đặt tệp này vào trang web bạn vừa tạo. Duyệt đến trang, tốt nhất là với Firefox;), và đảm bảo rằng bạn có phần MySQL với một số thông tin MySQL trong đó. Nếu không, thì đường dẫn của bạn có thể bị hỏng, hoặc bạn vẫn không chỉnh sửa đúng PHP.ini (một lần nữa, hãy nhìn vào vị trí mà phpinfo () hiển thị cho bạn, và chỉ cần chỉnh sửa nó ở đó nếu bạn phải, sau đó di chuyển nó sau đó và re-config).
PHP kết nối với MySQL
Php 5 trở lên có thể làm việc với cơ sở dữ liệu MySQL bằng cách sử dụng:
- Mở rộng MySQLI (“Tôi” là viết tắt của cải tiến)
- PDO (Đối tượng dữ liệu PHP)
Các phiên bản trước của PHP đã sử dụng tiện ích mở rộng MySQL. Tuy nhiên, phần mở rộng này đã bị mất giá vào năm 2012.
Tôi nên sử dụng mysqli hay pdo?
Nếu bạn cần một câu trả lời ngắn, đó sẽ là “bất cứ điều gì bạn thích”.
Cả MySQLI và PDO đều có lợi thế của họ:
PDO sẽ hoạt động trên 12 hệ thống cơ sở dữ liệu khác nhau, trong khi MySQLI sẽ chỉ hoạt động với cơ sở dữ liệu MySQL.
Vì vậy, nếu bạn phải chuyển dự án của mình để sử dụng cơ sở dữ liệu khác, PDO sẽ làm cho quy trình trở nên dễ dàng. Bạn chỉ phải thay đổi chuỗi kết nối và một vài truy vấn. Với MySQLI, bạn sẽ cần viết lại toàn bộ mã – bao gồm các truy vấn.
Cả hai đều theo định hướng đối tượng, nhưng MySQLI cũng cung cấp API thủ tục.
Cả hai đều hỗ trợ các tuyên bố đã chuẩn bị. Các tuyên bố được chuẩn bị bảo vệ khỏi SQL tiêm và rất quan trọng đối với bảo mật ứng dụng web.
Ví dụ MySQL trong cả cú pháp MySQLI và PDO
Trong đó, và trong các chương sau, chúng tôi đã chứng minh ba cách làm việc với PHP và MySQL:
- Mysqli (hướng đối tượng)
- Mysqli (thủ tục)
- PDO
Cài đặt MySQLI
Đối với Linux và Windows: tiện ích mở rộng MySQLI được tự động cài đặt trong hầu hết các trường hợp, khi gói MySQL PHP5 được cài đặt.
Cài đặt PDO
Mở kết nối với MySQL
Trước khi chúng tôi có thể truy cập dữ liệu trong cơ sở dữ liệu MySQL, chúng tôi cần có thể kết nối với máy chủ:
Ví dụ (hướng đối tượng MySQLI)
$ servername = “localhost”;
$ username = “tên người dùng”;
$ Mật khẩu = “Mật khẩu”;
?php
// Tạo kết nối
$ Conn = new mysqli ($ servername, $ username, $ password);
// Kiểm tra kết nối
if ($ Conn-> Connect_error) Die (“Kết nối không thành công:” . $ Conn-> Connect_error);
>
echo “kết nối thành công”;
?>
Lưu ý trên ví dụ hướng đối tượng ở trên:
$ Connect_error đã bị hỏng cho đến khi PHP 5.2.9 và 5.3.0. Nếu bạn cần đảm bảo khả năng tương thích với các phiên bản PHP trước 5.2.9 và 5.3.0, thay vào đó, hãy sử dụng mã sau:
// Kiểm tra kết nối
if (mysqli_connect_error ()) Die (“Kết nối cơ sở dữ liệu không thành công:” . mysqli_connect_error ());
>
Ví dụ (Thủ tục MySQLI)
$ servername = “localhost”;
$ username = “tên người dùng”;
$ Mật khẩu = “Mật khẩu”;
?php
// Tạo kết nối
$ Conn = mysqli_connect ($ servername, $ username, $ password);
// Kiểm tra kết nối
nếu như (!$ Conn) Die (“Kết nối không thành công:” . mysqli_connect_error ());
>
echo “kết nối thành công”;
?>
Ví dụ (PDO)
$ servername = “localhost”;
$ username = “tên người dùng”;
$ Mật khẩu = “Mật khẩu”;
?php
Hãy thử $ Conn = new
// Đặt chế độ lỗi PDO thành ngoại lệ
$ Conn-> setAttribution (pdo :: attr_errmode, pdo :: errmode_exception);
echo “kết nối thành công”;
> Catch (PDOException $ E) Echo “Kết nối không thành công:” . $ e-> getMessage ();
>
?>
Ghi chú: Trong ví dụ PDO ở trên, chúng tôi cũng có Được chỉ định là cơ sở dữ liệu (MYDB). PDO yêu cầu một cơ sở dữ liệu hợp lệ để kết nối với. Nếu không có cơ sở dữ liệu nào được chỉ định, một ngoại lệ sẽ được ném.
Mẹo: Một lợi ích lớn của PDO là nó có một lớp ngoại lệ để xử lý mọi vấn đề có thể xảy ra trong các truy vấn cơ sở dữ liệu của chúng tôi. Nếu một ngoại lệ được ném vào trong thử < >chặn, tập lệnh dừng thực thi và chảy trực tiếp đến lần bắt đầu tiên () < >khối.
Đóng kết nối
Kết nối sẽ được đóng tự động khi tập lệnh kết thúc. Để đóng kết nối trước, sử dụng các mục sau:
Cách kết nối PHP với cơ sở dữ liệu MySQL
Trong blog này, chúng tôi đưa ra một cái nhìn tổng quan về MySQL, tại sao nó thường được sử dụng cùng với PHP và đi qua cách kết nối PHP với cơ sở dữ liệu MySQL.
- MySQL là gì?
- Tại sao kết nối PHP với MySQL?
- Cách kết nối PHP với cơ sở dữ liệu MySQL
- Tập lệnh mẫu để kết nối cơ sở dữ liệu MySQL với PHP
- Cân nhắc bảo mật khi sử dụng MySQL và PHP
- MySQL và PHP: Đặt MP vào ngăn xếp đèn
- Suy nghĩ cuối cùng
MySQL là gì?
MySQL là tùy chọn nguồn mở phổ biến nhất cho Hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS). Nó tuân thủ các tiêu chuẩn SQL và cung cấp các chức năng RDBMS phổ biến như kích hoạt, tham gia và chế độ xem.
Và đối với các nhà phát triển đã quen thuộc với các giải pháp RDBMS như DB2 và Oracle, MySQL cũng dễ học. Mariadb là một cái nĩa của mysql. Bạn có thể sử dụng thông tin là blog này để kết nối MariaDB với PHP.
Tại sao kết nối PHP với MySQL?
Mục đích của nhiều giải pháp PHP là cung cấp quyền truy cập dựa trên web vào nội dung động’S được lưu trữ trong cơ sở dữ liệu. PHP hỗ trợ nhiều hệ thống quản lý cơ sở dữ liệu bao gồm MySQL, MariaDB, DB2, MongoDB, Oracle, PostgreSQL và SQLite.
Cách kết nối PHP với cơ sở dữ liệu MySQL
Dưới đây là hai bước để kết nối PHP với cơ sở dữ liệu MySQL.
1. Sử dụng các tiện ích mở rộng để kết nối cơ sở dữ liệu MySQL trong PHP
PHP cung cấp ba tiện ích mở rộng mà bạn có thể sử dụng để:
- Kết nối các ứng dụng PHP với MySQL (và MariaDB).
- Truy xuất thông tin máy chủ cơ sở dữ liệu.
- Quản lý các lỗi được tạo từ các cuộc gọi cơ sở dữ liệu
- Làm việc với các bản ghi cơ sở dữ liệu bằng các hàm tạo, đọc, cập nhật và xóa (CRUD).
Ba tiện ích mở rộng mà PHP cung cấp để kết nối với mysql bao gồm mysqli, mysqlind và pdo_mysql.
Mở rộng MySQLI
mysqli trong PHP hỗ trợ MySQL 4.1 và mới hơn. Mysqli cũng được gọi là mysql được cải thiện.
Mở rộng MySQLND
Thường được gọi là trình điều khiển gốc MySQL, MySQLind cung cấp cơ sở hạ tầng bản địa PHP cho tất cả các tiện ích mở rộng MySQL và là sự thay thế thả vào cho libmysqlclient. Nó’S quan trọng cần lưu ý rằng mysqlnd không cung cấp API. Đọc tài liệu để biết thêm thông tin.
Tiện ích mở rộng PDO_MYSQL
PDO_MYSQL cung cấp giao diện đối tượng php (PDO) cho cơ sở dữ liệu MySQL là lớp trừu tượng truy cập dữ liệu.
2. Thêm câu lệnh SQL vào các chức năng PHP
Bằng cách sử dụng các tiện ích mở rộng MYSQL trong tập lệnh PHP, bạn có thể thêm các câu lệnh SQL sau trong các hàm CRUD PHP để hoạt động với các bản ghi cơ sở dữ liệu MySQL:
Để chỉ định những bản ghi nào sẽ được tham gia, bạn có thể sử dụng các điều khoản. Thông thường, các giá trị mà các câu lệnh SQL cần sẽ đến từ các giá trị dạng web và được biểu diễn dưới dạng các biến trong tập lệnh PHP.
Tập lệnh mẫu để kết nối cơ sở dữ liệu MySQL và thực hiện các truy vấn MySQL trong PHP
Đây là một ví dụ đơn giản về tập lệnh PHP sử dụng các cuộc gọi được cung cấp bởi tiện ích mở rộng MySQLI để chọn các bản ghi từ cơ sở dữ liệu MySQL:
Hãy nhớ rằng DBMS sẽ thực thi các ràng buộc tương tự đối với các câu lệnh SQL được thực thi thông qua PHP vì nó sẽ có bất kỳ giao diện nào khác vào cơ sở dữ liệu. Nỗ lực chèn hồ sơ với các khóa trùng lặp sẽ bị từ chối. Mã thích hợp nên bao gồm các thử nghiệm cho các điều kiện lỗi trên kết nối cơ sở dữ liệu (hiển thị ở trên) cũng như các lần thực thi truy vấn.
Ví dụ, mã sau đây có thể được chèn sau cuộc gọi ‘mysqli_connect’ để xác thực rằng kết nối thành công giữa PHP và MySQL đã được lấy (xem thêm về cách kiểm tra kết nối MySQL của bạn tại đây):
if (mysqli_connect_error ())
Tương tự, cuộc gọi ‘mysqli_query’ có thể được kiểm tra để trả lại hợp lệ và nếu không phải là cuộc gọi ‘mysqli_error ()’. ‘Mysqli_error ()’ trả về mô tả chuỗi của lỗi cuối cùng trong khi ‘mysql_errorno ()’ trả về số lỗi.
Cân nhắc bảo mật khi sử dụng MySQL và PHP
Bạn cần giữ bảo mật ở vị trí hàng đầu trong cả thiết kế của ứng dụng cũng như triển khai.
Một cách để đảm bảo bảo mật dữ liệu là thông qua tiện ích mở rộng ‘bộ lọc’ được cung cấp cho PHP cung cấp cho một số loại bộ lọc bao gồm ‘xác nhận’ và ‘vệ sinh’.
SQL tiêm
SQL Injection chính xác là những gì tên ngụ ý của nó là tiêm dữ liệu/câu lệnh vào câu lệnh SQL. Xem xét câu lệnh SQL Insert sau:
chọn * từ dbtable trong đó khách hàng = $ name;
Hãy giả sử thêm rằng giá trị cho $ name đến từ dạng web (có thể là một giả định tiết kiệm vì đây có thể là một ứng dụng PHP. Nếu không có vệ sinh đúng hình thức web hoặc xác thực dữ liệu mà người dùng có thể nhập vào tên sau:
John; bán hàng cắt ngắn;
Điều này sẽ dẫn đến các câu lệnh SQL sau:
chọn * từ dbtable trong đó khách hàng = john; Bán hàng cắt ngắn;
Bây giờ, khi điều này được thực thi ngoài câu lệnh select được thực thi, các bản ghi từ bảng bán hàng sẽ bị xóa – rất khó có khả năng đó là kết quả mà chúng tôi muốn. Vì vậy, làm thế nào chúng ta có thể ngăn chặn điều này xảy ra? Một cách là với các tuyên bố đã chuẩn bị. Với một câu lệnh đã chuẩn bị, thay vì gửi một truy vấn thô (như tôi đã hiển thị ở trên) đến công cụ cơ sở dữ liệu, trước tiên chúng tôi cho biết cơ sở dữ liệu cấu trúc của truy vấn sẽ được gửi.
Làm thế nào để tránh tiêm SQL
Để tránh tiêm SQL, hãy sử dụng truy vấn đã chuẩn bị xác định trình giữ chỗ cho các tham số của câu lệnh truy vấn và sau đó liên kết các giá trị với các tham số đó. Chúng ta hãy xem một ví dụ khác, lần này là một chèn SQL sẽ được sử dụng:
Chèn vào giá trị dbtable (tên) ($ name);
Tại thời điểm này, vẫn có thể đưa ra các câu lệnh độc hại thông qua dữ liệu được biểu thị bằng biến tên $ được truyền vào cơ sở dữ liệu. Thay vào đó, hãy thay đổi câu lệnh trên để gửi một trình giữ chỗ đến công cụ cơ sở dữ liệu:
Chèn vào các giá trị DBTable (tên) (?);
Bây giờ, không thể tiêm vì không có giá trị (biến hoặc nghĩa đen) đang được gửi đến công cụ cơ sở dữ liệu.
Câu lệnh được tham số hóa (đôi khi được gọi là mẫu) được gửi đến công cụ cơ sở dữ liệu với hàm mysqli_prepare ().
Vì vậy, làm thế nào để chúng tôi thực sự có được giá trị cho cơ sở dữ liệu? Được thực hiện với hàm mysqli_stmt_bind_param () và cuối cùng, câu lệnh được thực thi với hàm mysqli_stmt_execute ().
Chúng ta hãy đặt tất cả những điều này lại với nhau trong một ví dụ:
Vì các biến bị ràng buộc được gửi đến công cụ cơ sở dữ liệu tách biệt với truy vấn, chúng không thể bị can thiệp. Công cụ cơ sở dữ liệu sử dụng các giá trị trực tiếp tại điểm thực thi sau khi câu lệnh đã được phân tích cú pháp.
Lưu ý rằng tham số thứ hai cho hàm ‘mysql_stmt_bind_param ()’ là một chuỗi để chỉ ra ‘loại (s)’ cho các giá trị được truyền. Trong trường hợp này, chỉ có một giá trị được truyền và giá trị đó có một loại chuỗi. Mã trên phải được mở rộng để bao gồm kiểm tra lỗi trên đường đi tại mỗi lần thực thi chức năng cơ sở dữ liệu.
Nếu bạn đang sử dụng Zend Server trong môi trường của mình thì bạn biết rằng bạn có:
- Các chức năng như truy tìm mã.
- Z-ray cho hồ sơ ứng dụng.
Các chức năng đó có thể hiển thị dữ liệu từ ứng dụng như giá trị truy vấn dữ liệu. Điều bạn có thể không biết là Zend Server cũng bao gồm khả năng che dấu dữ liệu cho các chức năng, định danh và khóa – cũng như các giá trị.
MySQL và PHP: Đặt MP vào ngăn xếp đèn
MySQL và PHP là các phần không thể thiếu của ngăn xếp đèn phổ biến.
Các ứng dụng năng suất phổ biến – chẳng hạn như WordPress, Drupal, Magento, Zencart và các ứng dụng khác – tất cả đều tận dụng ngăn xếp này. Họ sử dụng nó để thực hiện các giải pháp năng suất chất lượng cao, sẵn sàng cho doanh nghiệp trong Quản lý quan hệ khách hàng (CRM), Thương mại điện tử, Hệ thống quản lý nội dung (CMS) và các không gian khác.
Các ứng dụng này thường là khóa chuyển tiếp theo cách tiếp cận cài đặt/cấu hình và dựa vào phương pháp cộng đồng cả để phát triển cũng như hỗ trợ. Hỗ trợ lớp doanh nghiệp cho các loại giải pháp này có thể được lấy từ một số nguồn bao gồm cả nhóm OpenLogic tại Perforce.
Lưu ý: Từ viết tắt của đèn đề cập đến hệ điều hành (Linux), máy chủ web (APACHE), Hệ thống quản lý cơ sở dữ liệu (DBMS) và Ngôn ngữ kịch bản (PHP). Nhưng thực tế là cùng một ngăn xếp có sẵn trên vô số hệ điều hành bao gồm Windows (WAMP) và IBM I (IAMP). Sơ đồ sau đại diện cho ngăn xếp:
Suy nghĩ cuối cùng
Các ứng dụng web, cho dù là máy tính để bàn hay thiết bị di động, là những cách mạnh mẽ để đưa dữ liệu vào tay nhân viên, khách hàng hoặc các bên liên quan khác để hỗ trợ bất kỳ số lượng yêu cầu nào bao gồm thương mại, lập kế hoạch tài nguyên và xây dựng thông tin và chia sẻ.
PHP và MySQL là hai công cụ có giá trị để đưa dữ liệu lên web thông qua các ứng dụng khách hàng cũng như các giải pháp nguồn mở hiện có dựa trên các công nghệ này.
Kế hoạch sử dụng ngăn xếp đèn?
Zend có thể giúp nhóm của bạn phát triển chiến lược thực hiện các giải pháp PHP/MySQL – và cung cấp hỗ trợ cho các giải pháp được triển khai trên các công nghệ này.
Liên hệ với nhóm của chúng tôi ngay hôm nay để xem các dịch vụ chuyên nghiệp Zend có thể giúp bạn đạt được mục tiêu phát triển của mình như thế nào.
Liên hệ chúng tôi