繁体   English   中英

如何使用PHP + MySQLi数据库查找是否存在列

[英]How do I find if a column exists or not using PHP + mysqli database

如何使用PHP + mysqli数据库查找列是否存在。

我一直在尝试这些,也评论了一部分。但是似乎没有任何效果。

$column1="address";
$chkcol="SELECT * FROM `table_name` LIMIT 1";
/*  $chktable="SELECT * FROM information_schema.COLUMNS
    WHERE TABLE_SCHEMA = `db_name` AND TABLE_NAME = `table_name` AND COLUMN_NAME = `$col_name`";*/
    $mycol = mysqli_fetch_array($chkcol); 
/*  echo $val=mysqli_query($conn,$chktable);
    echo $val; */
    if(isset($mycol['$column1']))
        {
            $message="Adress column already exists.";
            echo $message;
        }

    else
        {
            echo "Column doesn't exist";
         }

如果有任何短代码或简单代码可以使其正常工作。 那让我知道 这不是MySQL,而是MySQLi(过程式),因为我发现的较早答案是MySQL(面向Obj的)不起作用。

假设您已经创建了具有所有字段的数据库/表,并成功地与正在使用的MySQL数据库建立了连接(通过创建mysqli对象或过程方式),这看起来可能像这样-

$connection = new mysqli('HOST_NAME', 'USERNAME', 'PASSWORD', 'DATABASE_NAME');

用这种方式写下您的SQL查询,并将其存储在您选择的变量中。 这条路 -

$query = 'SHOW COLUMNS FROM table_name';

通过以下方式向数据库发出查询并捕获结果-

$result = $connection->query($query);

然后,可以将fetch_all函数与MYSQLI_ASSOC常数一起使用以检索所有列名。 这条路 -

$values = $result->fetch_all(MYSQLI_ASSOC);
$column_names = array();    // $column_names = [];

if(!empty($values)){
    $column_names = array_keys($values[0]);
}

现在,您知道了要查找的列名,该列名存储为

$column1 = "address";

现在,您可以检查$ column_names数组(如果您的列存在)-

if (in_array($coulmn1, $column_names)) {
    echo "Yes! " . $column1 . " is present in the table!";
}

这是一个稍长的解决方案。 可能不是您要找的东西,但希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM