Cách tốt nhất để kiểm tra xem một bảng có tồn tại trong MySQL (tốt nhất là thông qua PDO trong PHP) mà không đưa ra một ngoại lệ. Tôi không cảm thấy như phân tích kết quả của "HIỂN THỊ BẢNG THÍCH" et cetera. Phải có một số loại truy vấn boolean?
121
MySQL kiểm tra nếu một bảng tồn tại mà không ném ngoại lệ?

21 giờ trước
121 hữu ích 0 bình luận 112k xem chia sẻ
10 trả lời 10
answer ![Trần Ngọc Sương]()
198

14:04:13 06/10/2009
Tôi không biết cú pháp PDO cho nó, nhưng điều này có vẻ khá đơn giản:
$result = mysql_query("SHOW TABLES LIKE 'myTable'");
$tableExists = mysql_num_rows($result) > 0;
198 hữu ích 5 bình luận chia sẻ
answer ![Đỗ Ánh Lệ]()
39

14:03:49 06/10/2009
Nếu bạn đang sử dụng MySQL 5.0 trở lên, bạn có thể thử:
SELECT COUNT(*)
FROM information_schema.tables
WHERE table_schema = '[database name]'
AND table_name = '[table name]';
Bất kỳ kết quả chỉ ra bảng tồn tại.
Từ: http://www.electrictoolbox.com/check-if-mysql-table-exists/
39 hữu ích 5 bình luận chia sẻ
answer ![Tạ Hữu Tài]()
8

22:10:18 18/10/2012
Sử dụng mysqli tôi đã tạo ra chức năng sau đây. Giả sử bạn có một ví dụ mysqli gọi là $ con.
function table_exist($table){
global $con;
$table = $con->real_escape_string($table);
$sql = "show tables like '".$table."'";
$res = $con->query($sql);
return ($res->num_rows > 0);
}
Hy vọng nó giúp.
Cảnh báo: do @jcaron bị chặn bởi chức năng này có thể dễ bị tấn công bởi các biểu đồ vuông, vì vậy hãy đảm bảo $table
var của bạn sạch sẽ hoặc thậm chí sử dụng các truy vấn được tham số hóa tốt hơn.
8 hữu ích 4 bình luận chia sẻ
answer ![Huỳnh Tường Lâm]()
3

06:15:23 10/10/2013
Đây là giải pháp của tôi mà tôi thích khi sử dụng các thủ tục được lưu trữ. Chức năng mysql tùy chỉnh để kiểm tra bảng tồn tại trong cơ sở dữ liệu hiện tại.
delimiter $$
CREATE FUNCTION TABLE_EXISTS(_table_name VARCHAR(45))
RETURNS BOOLEAN
DETERMINISTIC READS SQL DATA
BEGIN
DECLARE _exists TINYINT(1) DEFAULT 0;
SELECT COUNT(*) INTO _exists
FROM information_schema.tables
WHERE table_schema = DATABASE()
AND table_name = _table_name;
RETURN _exists;
END$$
SELECT TABLE_EXISTS('you_table_name') as _exists
3 hữu ích 0 bình luận chia sẻ
answer ![Trần Lục Bình]()
3

17:04:04 19/11/2013
Điều này được đăng đơn giản nếu bất cứ ai đến tìm câu hỏi này. Mặc dù nó đã được trả lời một chút. Một số câu trả lời làm cho nó phức tạp hơn mức cần thiết.
Đối với mysql * Tôi đã sử dụng:
if (mysqli_num_rows(
mysqli_query(
$con,"SHOW TABLES LIKE '" . $table . "'")
) > 0
or die ("No table set")
){
Trong PDO tôi đã sử dụng:
if ($con->query(
"SHOW TABLES LIKE '" . $table . "'"
)->rowCount() > 0
or die("No table set")
){
Với điều này tôi chỉ cần đẩy các điều kiện khác vào hoặc. Và đối với nhu cầu của tôi, tôi chỉ cần chết. Mặc dù bạn có thể thiết lập hoặc để những thứ khác. Một số có thể thích if / other if / other. Đó là sau đó để loại bỏ hoặc sau đó cung cấp if / other if / other.
3 hữu ích 0 bình luận chia sẻ
answer ![Phạm Diễm Lộc]()
2

09:04:28 24/07/2015
Vì "Hiển thị bảng" có thể chậm trên các cơ sở dữ liệu lớn hơn, tôi khuyên bạn nên sử dụng "MÔ TẢ" và kiểm tra xem bạn có nhận được đúng / sai không
$tableExists = mysqli_query("DESCRIBE `myTable`");
2 hữu ích 1 bình luận chia sẻ
answer ![Dương Xuân Nhiên]()
1

14:33:19 18/09/2013
$q = "SHOW TABLES";
$res = mysql_query($q, $con);
if ($res)
while ( $row = mysql_fetch_array($res, MYSQL_ASSOC) )
{
foreach( $row as $key => $value )
{
if ( $value = BTABLE ) // BTABLE IS A DEFINED NAME OF TABLE
echo "exist";
else
echo "not exist";
}
}
1 hữu ích 2 bình luận chia sẻ
answer ![Phạm Tài Nguyên]()
1

16:56:05 18/04/2016
Khung Zend
public function verifyTablesExists($tablesName)
{
$db = $this->getDefaultAdapter();
$config_db = $db->getConfig();
$sql = "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{$config_db['dbname']}' AND table_name = '{$tablesName}'";
$result = $db->fetchRow($sql);
return $result;
}
1 hữu ích 0 bình luận chia sẻ
answer ![Trần Nhật Minh]()
1

06:47:36 31/05/2016
Nếu lý do muốn làm điều này là việc tạo bảng có điều kiện, thì 'TẠO BẢNG NẾU KHÔNG HIỆN TẠI' có vẻ lý tưởng cho công việc. Cho đến khi tôi phát hiện ra điều này, tôi đã sử dụng phương pháp 'MÔ TẢ' ở trên. Thêm thông tin tại đây: MySQL "TẠO BẢNG NẾU KHÔNG HIỆN TẠI" -> Lỗi 1050
1 hữu ích 0 bình luận chia sẻ
answer ![Dương Thu Nguyệt]()
9

04:55:13 24/10/2012
Tại sao bạn làm cho nó rất khó hiểu?
function table_exist($table){
$pTableExist = mysql_query("show tables like '".$table."'");
if ($rTableExist = mysql_fetch_array($pTableExist)) {
return "Yes";
}else{
return "No";
}
}
9 hữu ích 1 bình luận chia sẻ
Xem nguồn: https://stackoverflow.com//questions/1525784/mysql-check-if-a-table-exists-without-throwing-an-exception

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hỏi câu hỏi của bạn.
, hoặc Có thể bạn quan tâm

Hoạt động
Liên quan
Mới tạo