Bir tablo bir özel durum atma olmadan varsa MySQL kontrol

6 Cevap php

Ne bir tablo istisna atma olmadan (PHP tercihen PDO) MySQL varsa kontrol etmek için en iyi yoldur. Ben ve saire "GİBİ GÖSTER TABLOLAR" sonuçlarını ayrıştırma gibi hissetmiyorum. Boolean sorgu çeşit olmalı?

6 Cevap

Ben bunun için PDO sözdizimi bilmiyorum, ama bu oldukça düz ileri görünüyor:

$result = mysql_query("SHOW TABLES LIKE 'myTable'");
$tableExists = mysql_num_rows($result) > 0;

Daha sonra MySQL 5.0 kullanıyorsanız ve ediyorsanız deneyebilirsiniz:

SELECT COUNT(*)
FROM information_schema.tables 
WHERE table_schema = '[database name]' 
AND table_name = '[table name]';

Herhangi bir sonuçlar tablo mevcut göstermektedir.

Gönderen: http://www.electrictoolbox.com/check-if-mysql-table-exists/

Ben işlevi aşağıdaki oluşturduk mysqli kullanma. Eğer $ con adında bir mysqli örneği var Asuming.

function table_exist($table){
    global $con;
    $sql = "show tables like '".$table."'";
    $res = $con->query($sql);
    return ($res->num_rows > 0);
}

Umarım yardımcı olur.

Bu kimse bu soruya aramak için geliyor sadece eğer nakledilir. Onun biraz cevaplanmış olsa. Cevaplardan bazıları olması gerekenden daha daha karmaşık hale getirmektedir.

Mysql için * I kullandı:

if (mysqli_num_rows(
    mysqli_query(
                    $con,"SHOW TABLES LIKE '" . $table . "'")
                ) > 0
        or die ("No table set")
    ){

PDO'de kullandım:

if ($con->query(
                   "SHOW TABLES LIKE '" . $table . "'"
               )->rowCount() > 0
        or die("No table set")
   ){

Bu ben sadece başka içine durumu veya itin. Ve benim ihtiyaçları için ben sadece sadece ölmek gerekir. Ayarlamak veya başka şeyler olabilir rağmen. Bazı if / else if / else tercih edebilirsiniz. Hangi sonra kaldırmak ya da ve ardından if / else if / else kaynağı.

Burada saklanan prosedürleri kullanırken tercihim benim çözümdür. Tablo kontrol için özel mysql fonksiyonu mevcut kaydedilmedi.

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

Neden anlamak bu kadar zor hale?

function table_exist($table){ 
    $pTableExist = mysql_query("show tables like '".$table."'");
    if ($rTableExist = mysql_fetch_array($pTableExist)) {
        return "Yes";
    }else{
        return "No";
    }
}