Không lấy ra được họ và tên từ database

Collation: utf8_general_ci    
Type: InnoDB
$userid= mysqli_real_escape_string($con , $_GET['userid']);

function profile($userid)
{
global $con;
    $data = array();
    $q = mysqli_query($con,"select * from user    where userid='$userid'");
    $r = mysqli_fetch_array($q);
    $data['fullname'] = $r['fullname'];
    return $data;
}
$pro = profile($userid);
$pro_name = $pro['fullname'];

Sao e chỉ lấy được họ không à(nó không lấy từ khoảng trắng về sau)??
trong CSDL thì có cả họ và tên
Ai giúp e với, e cảm ơn nhiều ạ??

1 Like

Bạn thử sửa họ tên thành tiếng Việt không dấu thử xem. Nếu không dấu mà ra đầy đủ thì khả năng bạn kết nối phải thêm câu lệnh:

$con -> set_charset("utf8");

ngay sau câu:

$con = new mysqli("localhost","my_user","my_password","my_db");

của bạn

6 Likes

@superthin

<?php
    $db_host = "localhost";
    $db_user = "root";
    $db_pass = "";
    $db_name = "mypro";

    $con = mysqli_connect($db_host,$db_user,$db_pass,$db_name);
    $set = mysqli_set_charset($con, 'UTF8');
    if(mysqli_connect_error())
    {
        echo 'connect to database failed:'.mysqli_connect_errno();
    }
?>

connect của e đây ạ
vẫn không được @superthin ơi!
tiếng Việt vẫn hiển thị bình thường
field nào có khoảng trắng thì chỉ hiển thị từ đầu tiên thôi à.

Ý của mình là liệu có phải tiếng Việt có dấu là nguyên nhân khiến cái khoảng trắng trở thành vấn đề hay không đó bạn. Nếu tiếng Việt không dấu nó hiển thị được cả khoảng trắng thì hoá ra lỗi không phải ở khoảng trắng mà là MySQL hay MariaDB có bug liên quan UTF-8.

Giờ để biết liệu có khả năng thư viện mysqli đi với PHP của bạn có lỗi bug hay không, bạn thử 1 trong 2 cách sau:

  1. Nếu có phpMyAdmin, bạn vào đó gõ câu lệnh query: SELECT fullname FROM user WHERE userid=‘của bạn’; để xem kết quả thế nào.
  2. Nếu không có phpMyAdmin, hãy gõ lệnh từ terminal của bạn: mysql -uroot -p rồi nhập mật khẩu vào, sau đó use tên-csdl-của bạn; rồi gõ câu query như đã đề cập.

Nếu một trong 2 cách trên mà hiển thị ổn, thì bạn nên cài web server (tức gồm có WAMP hoặc LAMP) với PHP phiên bản khác, phiên bản mysqli cũng khác, MySQL hoặc MariaDB phiên bản khác xem sao. Chúng ta chưa đủ khả năng dò bug của mấy cái cao siêu này thì cách thay đổi phiên bản là cách dễ làm nhất.

4 Likes

hoặc đơn giản chỉ là lúc insert dữ liệu bị sai. Cách đơn giản nhất là kiểm tra lại dữ liệu

4 Likes

Bạn vào database vào chạy câu query select thử xem có trả về kết quả không. Nếu không thì viết lại query cho đến khi có kết quả như mong muốn

Khi chắc chắn câu query của mình đã đúng, thì bạn hãy viết function PHP để lấy dữ liêu

3 Likes

xin cảm ơn mọi người ạ
e đã dùng mọi cách (nâng cấp, hạ cấp các phiên bản, thêm, sửa, thay đổi, xóa…).
Gần như là 1 project mới luôn.
cuối cùng phát hiện lỗi nằm ở HTML (pó tay)
Value không có ngoặc Sublime Text nó chẳng báo j
Cảm ơn a e đã gợi ý và kinh nghiệm cho a e nào xui gặp con ma vô hình này nhé!

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?