Hy vọng ai đó có thể giải thích sự cố mà tôi đã tìm thấy khi thực hiện một kết nối đơn giản giữa PHP 7 và MariaDB Server 10.3.32 trên Ubuntu 20.04.
Đây là dữ liệu kết nối:
$dsn = "mysql:localhost; dbname=databasename; charset=utf8mb4";
$options = [ PDO::ATTR_EMULATE_PREPARES => sai,
PDO::ATTR_ERRMODE => PDO::ERRORMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
];
$pdo = PDO mới($dsn, "tên người dùng", "mật khẩu", $options);
Các tùy chọn $
cần phải được gỡ bỏ trước khi nó xuất dữ liệu chuỗi cho chương trình.Nếu không làm điều này, tôi sẽ chỉ nhận được các hộp đen mà tôi cho là một loại dữ liệu nào đó chứ không phải các chuỗi mà tôi đang tìm kiếm.
Tôi đã cố gắng bình luận ra PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC
, nhưng tôi vẫn gặp sự cố.
Tôi nhận thấy rằng nếu tôi nhận xét PDO::ATTR_DEFAULT_FETCH_MODE=> PDO::FETCH_ASSOC, tôi có thể sử dụng vòng lặp for để lấy thông tin với chỉ số số $dvds[0][0]; nhưng tôi không thể sử dụng tên của cột cơ sở dữ liệu tức là. $dvds['title']; nếu tôi không ghi chú, tôi có thể lấy nó bằng print_r nhưng tôi không nhận được gì trong vòng lặp for bằng cách sử dụng số hoặc chỉ mục kết hợp. Kỳ dị!
Tôi phát hiện ra rằng tôi đã không truy cập dữ liệu được trả về đúng cách.
Tôi cần sử dụng vòng lặp foreach sau đó truy cập từng hàng theo tiêu đề liên kết của từng cột trong cơ sở dữ liệu. Cảm ơn.