2010-06-29 26 views
5

Tôi chỉ đang cố gắng để có được giá trị tăng tự động của bảng hiện cao nhất. Tôi không cần biết tăng tự động tiếp theo là gì, chỉ là giá trị cao nhất của những gì có trong bảng ngay bây giờ. Tôi đang sử dụng mã bên dưới, nhưng bất kể mức tăng tự động thực tế là gì, bảng nào tôi đã chèn lần cuối, bảng nào được cập nhật lần cuối/sửa đổi hoặc bất kỳ yếu tố nào khác mà tôi có thể thấy, giá trị luôn trả về . Điều này làm tôi bối rối vì hai lý do. Đầu tiên tôi không hiểu tại sao số này luôn là 4, thứ hai tôi không hiểu tại sao tôi lại lấy lại một giá trị chuỗi (với các chữ cái và ký hiệu) thay vì chỉ là một số nguyên. Thỏa thuận ở đây là gì?MySQL MAX (id) được gọi từ PHP tạo ra giá trị lạ

<?php $highest_id = mysql_query("SELECT MAX(c_id) FROM customers"); ?>

Trả lời

13

mysql_query không trả về giá trị từ các truy vấn, nó trả về một tài nguyên kết quả. Để có được giá trị thực, bạn cần sử dụng một trong các hàm mysql_fetch_*, chuyển nó qua tài nguyên kết quả bạn nhận được từ mysql_query.

<?php 
    $result = mysql_query("SELECT MAX(c_id) FROM customers"); 
    $row = mysql_fetch_row($result); 
    $highest_id = $row[0]; 
?> 

hoặc ngắn hơn ...

<?php 
    $highest_id = mysql_result(mysql_query("SELECT MAX(c_id) FROM customers"), 0); 
?> 
+0

Tôi cảm thấy loại bài đăng ngu xuẩn ở trên đó, nhưng vâng, tôi thực sự đã có nó như thế lúc đầu, nhưng kết quả trả lại là '' ''. Tôi sẽ chỉnh sửa bài đăng của tôi để cho bạn thấy những gì tôi đã thử ngay từ đầu (đó là những gì bạn đang đề xuất). – ubiquibacon

+0

Ok, tôi hiểu tôi đã làm gì sai. Mã ban đầu của tôi, tôi đã sử dụng 'mysql_fetch_array' và sau đó tôi đã sai lầm khi bạn có' 0' trong '$ row [0]'. Cảm ơn bạn đã giúp đỡ! – ubiquibacon

3

mysql_query trả về một xử lý kết quả, không phải là kết quả thực tế. Nói cách khác, kết quả truy vấn của bạn được lưu dưới dạng id tài nguyên # 4 (và điều đó không được bảo đảm giống nhau luôn luôn, đó là trùng hợp ngẫu nhiên nếu bạn thấy nó theo cách đó mọi lúc).

Để truy cập kết quả bạn cần sử dụng một cái gì đó như mysql_fetch_array hoặc một trong các chức năng khác trong cùng một gia đình.

Something như thế này:

<?php 

$query = mysql_query("SELECT MAX(c_id) as max FROM customers"); 
$row = mysql_fetch_array($query); 
$highest_id = $row['max']; 

?> 
0
$highest_id = mysql_result(mysql_query("SELECT MAX(c_id) FROM customers")); 
+0

Rất ngắn gọn, nhưng phải là: $ highest_id = mysql_result (mysql_query ("SELECT MAX (c_id) FROM khách hàng"), 0); – TomWilsonFL

0

cách 2015 để làm điều này
giả sử bạn có cơ sở dữ liệu ($ this-> db)

$maxid = $this->db->query('SELECT MAX(c_id) FROM `customers`')->fetchColumn(); 
2

này là câu trả lời của tôi:

require_once 'db_cconnection.php'; 
$query = "SELECT MAX(stud_id) FROM student_tbl"; 
$result = mysqli_query($connection, $query); 
$row = mysqli_fetch_row($result); 
echo $row[0]; 

Khi bạn sử dụng mysqli_fetch_row, nó sẽ chỉ tìm nạp một hàng, vì chúng tôi chỉ muốn một hàng. $row sẽ là một mảng. Vì vậy, chúng ta cần phải có được giá trị của nó thông qua chỉ số mảng.

Các vấn đề liên quan