Выберите имена столбцов из SQL Server с помощью PDO - PullRequest
0 голосов
/ 02 февраля 2011

Я пытаюсь выбрать имена столбцов из базы данных SQL Server со следующим кодом:

<code> public function getColumns($table){

        $columns = array();
        $sql = "select column_name from information_schema.columns where table_name = 'dbo.myTable'";

        $stmt = $this->conn()->prepare($sql);

        try {

            if($stmt->execute()){

                $raw_column_data = $stmt->fetchAll(PDO::FETCH_ASSOC);
                //
                //this is empty so we can stop right there
                //
                echo "<pre>";
                print_r($raw_column_data);
                echo "
";} else {echo"
";
                    print_r($stmt->errorInfo());
                    echo "
";} return $ columns;} catch (Exception $ e){return $ e-> getMessage (); // возвращаемое исключение}}

Любые идеи, почему массив '$ raw_column_data` может быть нулевым? Я искал в Google верх и низ, но без удачи.Я почти уверен, что это правильный синтаксис, и я уверен, что он запрашивает базу данных правильно.

Ответы [ 3 ]

1 голос
/ 02 февраля 2011

Попробуйте удалить «dbo».в этой строке ...

$sql = "select column_name from information_schema.columns where table_name = 'dbo.myTable'";

изменить на:

$sql = "select column_name from information_schema.columns where table_name = 'myTable'";
0 голосов
/ 02 февраля 2011

Одна простая вещь: возьми это "дбо". вне названия таблицы. Это значение будет найдено в столбце "table_schema". Так что должно быть "... где table_name = 'myTablel'"

Предполагается, что все ваши драйверы установлены, и что вы можете получать результаты из других запросов, которые бы это делали.

0 голосов
/ 02 февраля 2011

Ваше утверждение where выглядит неправильно, оно не должно быть where table_name = dbo.myTable

должно быть

where 
    table_name = 'myTable' 
     and TABLE_SCHEMA = 'dbo'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...