数据库
首页 > 数据库> > PHP PDO检查mySQL表中的多个列并创建不存在的列

PHP PDO检查mySQL表中的多个列并创建不存在的列

作者:互联网

寻找一种方法来检查数据库中的表是否已与所需的列组合在一起.

我建立这个功能:

function verifydbtable($table,$fields){
    global $fsdbh;
    foreach($fields as $field => $type){
        $verify = $fsdbh->prepare("ALTER TABLE `$table` ADD `$field` $type;");
        $verify->execute();
    }
    return 1;
}

其中$table是要更新的表,$fields包含要检查的所有字段的数组. $type包含字段的类型,例如. VACHAR(20).

该功能适用​​于每个字段,直到遇到一个已经存在的字段.然后返回false.

问题在于,它随后将不会检查数组中的其余列.我们如何使其继续检查其余字段.

由以下事实引起:如果一列已经存在,它将返回错误#1060-列名“ subtitle”重复,这是它应该执行的操作.然后,如果返回此错误,则需要跳到数组中的下一项.

用外行的话来说,我们需要这个,但这当然不是mySQL语句.

prepare("ALTER TABLE `$table` ADD IF NOT EXIST `$field` $type");

解决方法:

使用try catch:

function verifydbtable($table,$fields){
    global $fsdbh;
    $errors = array();
    foreach($fields as $field => $type){
        $verify = $fsdbh->prepare("ALTER TABLE `$table` ADD `$field` $type;");
        try {
          $verify->execute();
        } catch (PDOException $e) {
           // you might want to check and make sure its actually the right error
           // but you can figure that out if when you need to do so
           // we'll also store the field name in an array jsut in case we want to use it
           $errors[] = $field;
        }
    }

     return 1;
}

标签:foreach,alter-table,mysql,php,pdo
来源: https://codeday.me/bug/20191127/2076564.html