Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQLITE:检查列是否存在,并且在php中不触发错误_Php_Sqlite_Pdo - Fatal编程技术网

SQLITE:检查列是否存在,并且在php中不触发错误

SQLITE:检查列是否存在,并且在php中不触发错误,php,sqlite,pdo,Php,Sqlite,Pdo,我的情况是: 我有一个数组,其中包含表中列的名称 我必须使用循环遍历数组,并检查表中是否存在该字段(此列名) 如果它存在,我什么也不做,否则我必须补充 $array_column = ["column1 NOT NULL","column2 NOT NULL","column3 NOT NULL","column4 NOT NULL"]; for($j = 0 ; $j < count($array_column) ; $j++){ $query = "SELECT ".$arr

我的情况是:

  • 我有一个数组,其中包含表中列的名称
  • 我必须使用循环遍历数组,并检查表中是否存在该字段(此列名)
  • 如果它存在,我什么也不做,否则我必须补充

    $array_column = ["column1 NOT NULL","column2 NOT NULL","column3 NOT NULL","column4 NOT NULL"];
    
    for($j = 0 ; $j < count($array_column) ; $j++){
    
      $query = "SELECT ".$array_column[$j]." FROM my_table";
      $result = $db->query($query);
    
      $check = false;
      //try{
         foreach ($result as $row) { //error here
            $check = true;
         }
      //}catch (Exception $e) {
        //echo "here";
        //$check = false;
      //}
    
      if(!$check){
        echo "column [".$array_column[$j]."] to add <br>";
      } 
    
    }
    
    我也尝试了一个TryCatch,但同样的错误。 我希望php在找不到列时不会返回该错误

    更新1: 我尝试了这个方法,但不幸的是,当表中没有记录时,它就不起作用了

    $select = $db->query('SELECT * FROM mytable');
    
    $total_column = $select->columnCount();
    var_dump($total_column);
    
    for ($counter = 0; $counter <= $total_column; $counter ++) {
          $meta = $select->getColumnMeta($counter);
          $column[] = $meta['name'];
    }
    print_r($column);
    
    PRAGMA table_info(“table_name”)将返回一个行列表(表中每列一行) 不幸的是,您不能在select查询中使用它,但您可以在查询表之前解析它并尝试查找列名。 希望这是帮助

    PRAGMA table_info('table_name')将返回一个行列表(表中每列一行) 不幸的是,您不能在select查询中使用它,但您可以在查询表之前解析它并尝试查找列名。
    希望这是帮助

    您可以使用该函数获取包含表列名的数组。然后,可以使用此数组在循环中创建一个数组

    您可以使用该函数获取包含表的列名的数组。然后,可以使用此数组在循环中创建一个数组

    可能重复的@Phantom不是重复的@Phantom,因为从SQLite获取数据的方式与使用MySQL的方式不同。可能重复的@Phantom不是重复的@Phantom,因为从SQLite获取数据的方式与使用MySQL的方式不同。$db=new PDO('SQLite:info.sqlite3')$cols=sqlite\u fetch\u column\u类型('telecomere',$db,sqlite\u ASSOC)//致命错误:调用未定义的函数sqlite\u fetch\u column\u types(),您使用的是哪个版本的PHP?如果可能,取决于您可能需要的版本。$db=new-PDO('sqlite:info.sqlite3')$cols=sqlite\u fetch\u column\u类型('telecomere',$db,sqlite\u ASSOC)//致命错误:调用未定义的函数sqlite\u fetch\u column\u types(),您使用的是哪个版本的PHP?如果可能,取决于您可能需要的版本。
    $select = $db->query('SELECT * FROM mytable');
    
    $total_column = $select->columnCount();
    var_dump($total_column);
    
    for ($counter = 0; $counter <= $total_column; $counter ++) {
          $meta = $select->getColumnMeta($counter);
          $column[] = $meta['name'];
    }
    print_r($column);
    
    $result = $db->query("PRAGMA table_info(test2)");
    $result->setFetchMode(PDO::FETCH_ASSOC);
    $meta = array();
    foreach ($result as $row) {
       array_push($meta, $row['name']);
    }