01/10/2018, 14:19

Vấn đề về việc truy xuất một dữ liệu trong MySQL

Mình dùng câu lệnh này để truy xuất dữ liệu từ MySQL. Mình muốn lấy giá trị ở cột MAB ở hàng cuối cùng (hàng mà cột id có giá trị MAX).

sotruyxuat = “SELECT MAB FROM 01_ddg_bgg WHERE MAX(id)”;
echo $sotruyxuat;

Kết quả echo ra là: “SELECT MAB FROM 01_ddg_bgg WHERE MAX(id)” chứ không phải giá trị cần truy xuất ra. Theo mình hiểu thì biến sotruyxuat của mình được gán là chuỗi ký tự kia luôn chứ không phải là giá trị được select từ MySQL. Mọi người có thể xem giúp mình làm sao để lấy giá trị cần thiết ra ngoài không ạ.

Tài Sáng viết 16:25 ngày 01/10/2018

Mắc cười quá… hahaha. anyway. mới nghiên cứu mà có thể trình bày như vầy là tốt rồi.

Vấn đề của bạn nằm ở chỗ câu truy vấn của bạn là một chuỗi, chưa có tác động gì đến CSDL cả.
Bạn muốn làm việc với CSDL nào thì hãy tìm và đọc thêm về API của CSDL đó.
http://php.net/manual/en/mysqlinfo.api.choosing.php

voss viết 16:34 ngày 01/10/2018

Mắc cười quá… hahaha. anyway. mới nghiên cứu mà có thể trình bày như vầy là tốt rồi.

Vấn đề của bạn nằm ở chỗ câu truy vấn của bạn là một chuỗi, chưa có tác động gì đến CSDL cả.
Bạn muốn làm việc với CSDL nào thì hãy tìm và đọc thêm về API của CSDL đó.
http://php.net/manual/en/mysqlinfo.api.choosing.php

Cảm ơn bạn

voss viết 16:24 ngày 01/10/2018

Mắc cười quá… hahaha. anyway. mới nghiên cứu mà có thể trình bày như vầy là tốt rồi.

Vấn đề của bạn nằm ở chỗ câu truy vấn của bạn là một chuỗi, chưa có tác động gì đến CSDL cả.
Bạn muốn làm việc với CSDL nào thì hãy tìm và đọc thêm về API của CSDL đó.
http://php.net/manual/en/mysqlinfo.api.choosing.php

@taisang m ơn bạn mình đã truy xuất được dữ liệu đúng vị trí cần truy xuất. Mình xử dụng cú pháp trên php.

 <?php
$username = "root";
$password = "";
$sever    = "localhost";
$dbname   = "sht";
$mysqli = new mysqli("$sever", "$username", "$password", "$dbname");
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}
$query = "SELECT MAB FROM 01_ddg_bgg WHERE id=5";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
echo $row["MAB"];
$mysqli->close();
?>

Nhưng mình có một vấn đề muốn nhờ bạn tư vấn chút. Cột dữ liệu mình có cấu trúc như sau
[id][field1][field2][field3]field4[field5]
Id mình tăng dần theo mỗi lần dữ liệu insert vào. Mình muốn lấy ra một giá trị nào đó ở hàng id cuối cùng (dữ liệu insert gần nhất id max). Nhưng không thể select theo MAX(id).

$query = “SELECT MAB FROM 01_ddg_bgg WHERE MAX(id)”;

Liệu mình có phải selech lấy giá trị lớn nhất ở cột id, gán vào một biến, rồi lại selech dự theo where id= “biến” không? Hay có giải pháp nào tốt hơn.
Mình đã tìm được giải pháp. Đưa lên cho bạn nào cần tìm

$query = "SELECT MAB FROM 01_ddg_bgg WHERE id=(SELECT max(id) FROM 01_ddg_bgg )";

Đoàn Trọng Hiếu viết 16:35 ngày 01/10/2018

$query = “SELECT MAB FROM 01_ddg_bgg WHERE id=(SELECT max(id) FROM 01_ddg_bgg )”;

Nên hạn chế viết sub query và tận dụng những hàm có sẵn.
MySQL đã có sẵn hàm để lấy id được insert gần nhất : LAST_INSERT_ID()

Một số lời khuyên bên lề (có lẽ hơi thiên về kỹ năng và kinh nghiệm):

  • Search kỹ trước khi hỏi sẽ giúp nhớ lâu hơn
  • Search chính xác từ khóa và trọng tâm vấn đề
  • Ưu tiên search những hàm có sẵn trước khi tự viết
  • Ưu tiên link doc chính chủ hơn là stackoverflow =))
voss viết 16:33 ngày 01/10/2018

Cảm ơn lời khuyên của bạn

Bài liên quan
0