10/10/2018, 00:24

[PHP/MYSQL] lệnh select Max() lạ quá

Giả sử mình có bảng hoso như sau:

+----+------+
| id | name |
+----+------+
| 1 | dung |
| 2 | tuan |
| 3 | tuan |
| 4 | toan |
| 5 | toan |
| 6 | toan |
| 7 | toan |
| 8 | toan |
| 9 | toan |
| 10 | toan |
| 11 | toan |
| 12 | toan |
| 13 | toan |
| 14 | toan |
+----+------+

Khi truy vấn trong chương trình quản trị cơ sở dữ liệu:

select max(id) from `hoso`; thì kết quả là:
+---------+
| max(id) |
+---------+
| 14 |
+---------+

Nhưng khi dùng PHP với đoạn code:
PHP Code:

$lienket
=mysql_connect("localhost","root","");
mysql_select_db("test",$lienket);


$tv1="select Max(id) from `hoso`";
$a=mysql_query($tv1,$lienket);

echo (
$a); 
Thì lại nhận được giá trị là 3

Bạn nào biết tại sao không ? Xin hãy giúp với.
3do viết 02:29 ngày 10/10/2018
For SELECT, SHOW, DESCRIBE, EXPLAIN and other statements returning resultset, mysql_query() returns a resource on success, or FALSE on error.

For other type of SQL statements, UPDATE, DELETE, DROP, etc, mysql_query() returns TRUE on success or FALSE on error.

The returned result resource should be passed to mysql_fetch_array(), and other functions for dealing with result tables, to access the returned data.
echo mysql_query là sai rồi
annh0106 viết 02:24 ngày 10/10/2018
$lienket=mysql_connect("localhost","root","");
mysql_select_db("test",$lienket);


$tv1="select Max(id) as max_val from `hoso`";
$a=mysql_query($tv1,$lienket);
$result = mysql_fetch_array($a);
echo ($result['max_val']);
s.code viết 02:34 ngày 10/10/2018
) Bạn sử dụng sai rồi. Giá trị $a đó chỉ lưu giá trị địa chỉ vùng tài nguyên lưu trữ kết quả trả về của truy vấn. Muốn lấy giá trị max đó thì phải:

$row = mysql_fetch_array($a);
echo $row['max(id)'];
UNGDIX viết 02:27 ngày 10/10/2018
Mình dùng:

$tv1="select Max(id) as max_val from `hoso`";
$a=mysql_query($tv1,$lienket);
$result = mysql_fetch_array($a);
echo ($result['max_val']);
Thì được còn dùng:

$row = mysql_fetch_array($a);
echo $row['max(id)'];
Thì lại ko hiện gì cả.

Dù sao cũng cám ơn các bạn.
hatvip viết 02:28 ngày 10/10/2018
Được gửi bởi UNGDIX
Mình dùng:



Thì được còn dùng:


Thì lại ko hiện gì cả.

Dù sao cũng cám ơn các bạn.
Chào bạn,

Bạn phải đặt tên cho cột max(id) rùi mới lấy giá trị tốt đc. VD 1 trên là đúng vì bạn đã đặt tên là select Max(id) as max_val
Còn VD 2 thì chưa có đặt tên, nên sai.

Ngoài ra bạn cũng phải cẩn thận trong việc lập trình phân biệt code Hoa và Thường nha
vn.disable viết 02:40 ngày 10/10/2018
Có phương pháp lâý max nào khác ko các bạn?

mình chưa hiêủ lắm chỗ này :
Bạn sử dụng sai rồi. Giá trị $a đó chỉ lưu giá trị địa chỉ vùng tài nguyên lưu trữ kết quả trả về của truy vấn.
Mình nghĩ chúng ta sẽ truy vấn vào để lâý ra 1 mảng các giá trị của cột id, sau đó dùng max vơí mảng này ?

Code :
$select = "select id from hoso";
$result = mysql_query($select,$conn);
$array = mysql_fetch_array($result);
$maxid = max($array);

Không biết đúng ko? mong các bạn chỉ thêm
binhvn viết 02:27 ngày 10/10/2018
PHP Code:
$result = @mysql_query('SELECT MAX(id) AS value FROM hoso');
$max = @mysql_fetch_array($result);

echo 
"MAX: {$max***91;'value'***93;}"
vn.disable viết 02:24 ngày 10/10/2018
@binhvn ! bạn giải thix thêm về cái dâú "@" dc ko?
SweetLoveFC viết 02:35 ngày 10/10/2018
Dấu @ là dùng để bỏ qua lỗi đó nếu nó không thực thi được.
Bài liên quan
0