Có cách nào để lấy tên cột của bảng trong mysql không? sử dụng phpLấy tên cột trong bảng mysql?
Trả lời
Bạn có thể sử dụng DESCRIBE:
DESCRIBE my_table;
Hoặc trong các phiên bản mới hơn, bạn có thể sử dụng INFORMATION_SCHEMA:
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';
Hoặc bạn có thể sử dụng SHOW COLUMNS:
SHOW COLUMNS FROM my_table;
Nhìn vào:
mysql_query('DESCRIBE '.$table);
Các MySQL chức năng mô tả bảng nên đưa bạn đến nơi bạn muốn đi (đặt tên bảng của bạn trong cho "bảng"). Bạn sẽ phải phân tích đầu ra một số, nhưng nó khá dễ dàng. Khi tôi nhớ lại, nếu bạn thực hiện truy vấn đó, kết quả truy vấn PHP truy cập các hàm bình thường sẽ cung cấp cho bạn cặp khóa-giá trị sẽ có tên cột làm khóa. Nhưng nó đã được một thời gian kể từ khi tôi sử dụng PHP do đó, không giữ cho tôi để điều đó. :)
Có một số tài liệu khá hay tại php.net trong http://us3.php.net/manual/en/function.mysql-list-fields.php – dannysauer
Các câu lệnh SQL sau đây là gần tương đương:
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'tbl_name'
[AND table_schema = 'db_name']
[AND column_name LIKE 'wild']
SHOW COLUMNS
FROM tbl_name
[FROM db_name]
[LIKE 'wild']
tham khảo: INFORMATION_SCHEMA COLUMNS
Ngoài ra còn có này nếu bạn thích:
mysql_query('SHOW COLUMNS FROM tableName');
Chức năng mysql_list_fields
thể bạn quan tâm; nhưng, theo cách thủ công nêu rõ:
Chức năng này không còn được dùng nữa. Thay vào đó, bạn có thể sử dụng số để sử dụng số
mysql_query()
đến phát hành câu lệnh SQLSHOW COLUMNS FROM table [LIKE 'name']
.
Chức năng hoạt động như thế nào nếu nó không phát ra truy vấn SQL đến máy chủ? Tại sao nó không được chấp nhận? – Pacerier
Bạn cũng có thể w ant để kiểm tra mysql_fetch_array()
, như trong:
$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs)) {
//$row[0] = 'First Field';
//$row['first_field'] = 'First Field';
}
Tôi đã tạo một hàm PDO trả về tất cả các tên cột trong một mảng đơn giản.
public function getColumnNames($table){
$sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = :table";
try {
$core = Core::getInstance();
$stmt = $core->dbh->prepare($sql);
$stmt->bindValue(':table', $table, PDO::PARAM_STR);
$stmt->execute();
$output = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
$output[] = $row['COLUMN_NAME'];
}
return $output;
}
catch(PDOException $pe) {
trigger_error('Could not connect to MySQL database. ' . $pe->getMessage() , E_USER_ERROR);
}
}
Đầu ra sẽ là một mảng:
Array (
[0] => id
[1] => name
[2] => email
[3] => shoe_size
[4] => likes
...)
Xin lỗi vì sự hoại nhưng tôi thích chức năng của tôi;)
T.B. Tôi chưa bao gồm lớp Core nhưng bạn có thể sử dụng lớp của riêng bạn .. D.S.
Giải pháp này là từ dòng lệnh mysql
mysql>USE information_schema;
Trong truy vấn dưới đây chỉ cần thay đổi < --DATABASE_NAME -> để cơ sở dữ liệu của bạn và < --TABLENAME -> để tên bảng của bạn, nơi bạn chỉ muốn Dòng giá trị của MÔ TẢ tuyên bố
mysql> SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = '<--DATABASE_NAME-->' AND TABLE_NAME='<--TABLENAME-->';
Các câu trả lời khác đã đề cập đến điều này .......... – Pacerier
Nó cũng thú vị để lưu ý rằng bạn có thể sử dụng
EXPLAIN table_name
đó đồng nghĩa với DESCRIBE table_name
và 012. mặc dù EXPLAIN thường được sử dụng để lấy thông tin về gói thực thi truy vấn.
Làm thế nào về điều này:
SELECT @cCommand := GROUP_CONCAT(COLUMN_NAME ORDER BY column_name SEPARATOR ',\n')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';
SET @cCommand = CONCAT('SELECT ', @cCommand, ' from my_database.my_table;');
PREPARE xCommand from @cCommand;
EXECUTE xCommand;
này làm việc cho tôi ..
$sql = "desc MyTableName";
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)){
echo $row[0]."<br>";
}
bạn có thể nhận được toàn bộ cấu trúc bảng sử dụng sau lệnh đơn giản.
DESC TableName
hoặc bạn có thể sử dụng truy vấn sau.
SHOW COLUMNS FROM TableName
trong mysql để có được cột chi tiết và cấu trúc bảng theo từ khóa sau hoặc truy vấn
1. DESC table_name
2. DESCRIBE table_name
3. SHOW COLUMNS FROM table_name
4. SHOW create table table_name;
5. EXPLAIN table_name
$col = $db->query("SHOW COLUMNS FROM category");
while ($fildss = $col->fetch_array())
{
$filds[] = '"{'.$fildss['Field'].'}"';
$values[] = '$rows->'.$fildss['Field'].'';
}
if($type == 'value')
{
return $values = implode(',', $values);
}
else {
return $filds = implode(',', $filds);
}
Để hữu ích hơn cho người dùng trong tương lai, bạn có thể vui lòng cung cấp một số bối cảnh cho câu trả lời của bạn, không chỉ là một kết xuất mã. –
tôi cần tên cột như một mảng phẳng, trong khi câu trả lời khác trở mảng kết hợp, vì vậy tôi đã sử dụng:
$con = mysqli_connect('localhost',$db_user,$db_pw,$db_name);
$table = 'people';
/**
* Get the column names for a mysql table
**/
function get_column_names($con, $table) {
$sql = 'DESCRIBE '.$table;
$result = mysqli_query($con, $sql);
$rows = array();
while($row = mysqli_fetch_assoc($result)) {
$rows[] = $row['Field'];
}
return $rows;
}
$col_names = function get_column_names($con, $table);
$ col_names nay tương đương với:
(
[0] => name
[1] => parent
[2] => number
[3] => chart_id
[4] => type
[5] => id
)
Tôi đã viết một tập lệnh php đơn giản để tìm nạp các cột trong bảng thông qua PHP: Show_table_columns.php
Tận hưởng!
Vui lòng đăng câu trả lời thực tế tại đây và chỉ sử dụng gist của bạn làm bản sao lưu/tham chiếu – ChrisF
- 1. LINQ: Lấy Tên Cột Bảng
- 2. Chỉ lấy tên cột như trong mảng mysql
- 3. lấy tên cột cho bảng cụ thể
- 4. mysql lấy tên cột bảng theo thứ tự bảng chữ cái
- 5. Hive - lấy tên cột
- 6. cách lấy tên cột của bảng trong truy cập ms?
- 7. Cách lấy tên cột của bảng khi chạy trong C#?
- 8. Lấy tên cột
- 9. Lấy tên cột trong jpa
- 10. Có bao nhiêu cột trong bảng MySQL
- 11. Lấy tên cột trong thực thể doctrine2
- 12. Lấy tên cột từ java.sql.ResultSet
- 13. MySQL - lấy giá trị từ một bảng khác nếu cột là rỗng
- 14. Lỗi Mysql 150 khi đổi tên cột
- 15. MySQL chọn tên cột như lĩnh vực
- 16. MySQL: Khi tên tham số thủ tục lưu trữ giống với tên cột của bảng
- 17. Từ dành riêng trong tên cột - chèn vào MySQL
- 18. mysql, lặp qua các tên cột
- 19. MYSQL tham gia các bảng dựa trên dữ liệu cột và tên bảng
- 20. Lấy tên bảng từ ActiveRecord
- 21. Thay thế cho tên cột "thứ tự" trong MySQL
- 22. Chọn MySQL, cột có cùng tên từ nhiều bảng, sắp xếp theo một cột khác có cùng tên
- 23. Không thể sử dụng tên cột "desc" trong mysql
- 24. Làm cách nào để thực thi tên bảng và cột nhạy cảm trong MySql?
- 25. Đổi tên một cột trong bảng mysql mà không phải lặp lại định nghĩa kiểu
- 26. Thêm cột mới vào bảng mysql lớn
- 27. Cách thêm cột mới vào bảng MYSQL
- 28. Mysql Chuyển đổi cột chèo (bảng Pivot)
- 29. Cách lấy tên bảng trong cơ sở dữ liệu mysql bằng Python và MySQLdb?
- 30. là `ngày` tên cột mysql hợp lệ?
DESCRIBE thực sự là một phím tắt cho SHOW COLUMNS (http: //dev.mysql.com/doc/refman/5.0/vi/describe.html) – svens
@svens yeah, MÔ TẢ đơn giản hơn, SHOW COLUMNS cung cấp cho bạn nhiều tùy chọn hơn – Greg
Tôi sẽ bỏ phiếu cho phiên bản Information_Schema, vì cú pháp này được hỗ trợ bởi hầu hết các cơ sở dữ liệu chính. Tốt nhất là chỉ học 1 cách nếu bạn phải làm vậy. – Kibbee