Подключение к базе данных Sharepoint через PHP - PullRequest
8 голосов
/ 16 октября 2011

Я не знаком с Sharepoint.Я хотел бы запросить или прочитать базу данных Sharepoint с помощью PHP.

Есть ли способ, которым я могу это сделать?

Спасибо заранее.Любая помощь с благодарностью.

Ответы [ 6 ]

6 голосов
/ 17 октября 2011

Я настоятельно рекомендую вместо этого использовать SharePoint WebServices ... если только нет веских причин (то есть производительности), я бы не трогал базу данных. Цитата из этого ответа:

  1. Это полностью не поддерживается лицензионным соглашением, с которым вы согласились установлен SharePoint.
  2. Ваши запросы не гарантированно будут работать после применение каких-либо исправлений или пакетов обновления для SharePoint, так как Microsoft может изменить схему базы данных в любое время.
  3. Непосредственный запрос базы данных может привести к дополнительной нагрузке на сервер и, следовательно, к производительности. проблемы.
  4. Прямые операторы SELECT для базы данных принимают совместно чтение блокировок на уровне транзакции по умолчанию, поэтому ваши пользовательские запросы может вызвать тупики и, следовательно, проблемы со стабильностью.
  5. Ваш заказ запросы могут привести к получению неверных данных.

Если вы хотите узнать больше о том, почему вы не должны запрашивать базу данных, здесь - действительно отличная статья

Запрос веб-службы SharePoint с помощью PHP

5 голосов
/ 18 февраля 2012

Вам следует рассмотреть возможность использования Camelot PHP Tools для SharePoint, это хорошо документированная php-фреймворк для формата Camelot XML, специально созданный для списков SharePoint.

Документация и загрузка

Вам также понадобится набор инструментов интеграции с Camelot SharePoint, http://camelottoolkit.codeplex.com/ и разъем Camelot .NET (http://www.bendsoft.com/net-sharepoint-connector/).

Установите Соединитель на коробке, которая может достигать сервера SharePoint, это может быть тот же сервер, что и сервер SharePoint, затем установите Integration Toolkit на том же сервере, что и Соединитель. Настройте сервис интеграции, который включен в инструментарий интеграции (следуйте инструкциям), и тогда все готово. На сайтах также есть несколько обучающих видео.

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

Выбор данных из SharePoint с помощью SQL

$SharePointQuery = new SharePointQuery(array(
    'sql' => "SELECT * FROM Tasks WHERE ID > 10",
    'connection_name' => 'SharePointConnection1'
));

Выбор данных из SharePoint по списку и имени представления

$SharePointQuery = new SharePointQuery(
    array(
        'listName' => 'Tasks',
        'viewName' => 'All Tasks',
        'includeAttachements' => false,
        'connection_name' => 'SharePointConnection1',
        'columns' => ''
    )
);

Вставка данных в SharePoint с помощью SQL и SharePointNonQuery

$SharePointNonQuery = new SharePointNonQuery(array(
    'sql' => "INSERT INTO Tasks (Title,AssignedTo,Status,Priority,DueDate,PercentComplete) VALUES ('Test task from PHP',1,'In Progress','(1) High', '".  date('Y-m-d H:i:s') ."',0.95)",
    'method' => 'ExecuteNonQuery',
    'connection_name' => 'SharePointConnection1'
));

Есть также хранимые процедуры, которые помогут вам с некоторыми операциями, такими как расширенная обработка библиотек документов

Скачать файл

$download = new CamelotDownloadFile(array(
    "file" => $_GET["file"],
    "listName" => 'Shared Documents',
    "connection_name" => 'SharePointConnection1'
));

$download->download_file();

Загрузить файл

$args = array(  
    "file" => $_FILES,
    "listName" => 'Shared Documents',
    "folder" => 'Folder/',
    "connection_name" => 'SharePointConnection2'
); 

$UploadFile = new CamelotUploadFile($args);
1 голос
/ 16 октября 2011

Это просто база данных - пока у вас есть имя сервера / базы данных и соответствующие разрешения, ничто не может вас остановить. Однако - схема довольно сложная, поэтому выяснить, что вам нужно, может быть сложно - в зависимости от того, что вы действительно хотите сделать, вам может быть лучше использовать веб-службы для доступа к Sharepoint OM.

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

0 голосов
/ 04 июня 2018

Я использовал это в API для соединения моего веб-приложения PHP с SharePoint и передачи данных из PHP в SharePoint, для меня это работало на 100%:

Инструкция по применению :

Установка

Загрузите файл WSDL для списков SharePoint, с которыми вы хотите взаимодействовать. Обычно это можно получить по адресу: sharepoint.url/subsite/_vti_bin/Lists.asmx?WSDL

Если вы используете composer, просто добавьте thybag / php-sharepoint-lists-api в ваш composer.json и запустите composer.

    {
    "require": {
        "thybag/php-sharepoint-lists-api": "dev-master"
    }
    }

Если вы не используете composer, вы можете загрузить копию файлов API SharePoint вручную и включить в свой проект верхний класс «SharePointAPI.php».

Создание объекта SharePointAPI

Чтобы использовать API списков PHP SharePoint, вам потребуется действительная учетная запись пользователя / службы с разрешениями на требуемый список.

Для большинства установок SharePoint вы можете создать новый экземпляр API, используя:

    use Thybag\SharePointAPI;
            $sp = new SharePointAPI('', '', '');

Если для вашей установки требуется NTLM-аутентификация, вы можете вместо этого использовать:

    use Thybag\SharePointAPI;
    $sp = new SharePointAPI('', '', '', 'NTLM');

Пользователи SharePoint Online должны использовать:

    use Thybag\SharePointAPI;
    $sp = new SharePointAPI('', '', '', 'SPONLINE');

Все методы возвращают массив по умолчанию. SetReturnType может использоваться, чтобы указать, что результаты должны быть возвращены как объекты.

Чтение из списка.

Чтобы вернуть все элементы из списка, используйте

    $sp->read('');
or
    $sp->query('')->get();

Чтобы вернуть только первые 10 элементов из списка, используйте:

    $sp->read('', 10);
* * Или тысяча сорок-девять
    $sp->query('')->limit(10)->get();

Чтобы вернуть все элементы из списка, где фамилия - кузнец, используйте:

    $sp->read('', NULL, array('surname'=>'smith'));

или

    $sp->query('')->where('surname', '=', 'smith')->get();

Запрос списка

Метод запроса можно использовать, когда необходимо указать сложный запрос, который можно легко определить с помощью методов чтения. Запросы строятся с использованием ряда (надеюсь, выразительных) методов псевдо SQL.

Если вы, например, хотели запросить список домашних животных и вернуть всех собак младше 5 лет (отсортированных по возрасту), которые вы могли бы использовать.


    $sp->query('list of pets')->where('type','=','dog')->and_where('age','sort('age','ASC')->get();

Если вы хотите получить первых 10 животных, которые были кошками или хомяками, вы можете использовать:

    $sp->query('list of pets')->where('type','=','cat')->or_where('type','=','hamster')->limit(10)->get();

Если вам нужно вернуть 5 предметов, но включая все поля, содержащиеся в списке, вы можете использовать. (передать false всем_полям, чтобы включить скрытые поля).

    $sp->query('list of pets')->all_fields()->get();

Если у вас есть набор CAML для конкретного расширенного запроса, который вы хотите выполнить, вы можете передать его объекту запроса с помощью:

    $sp->query('list of pets')->raw_where('Hello World')->limit(10)->get();

Добавление в список

Чтобы добавить новый элемент в список, вы можете использовать метод «write», «add» или «insert» (все функции идентичны). Создание новой записи в списке с именами столбцов, фамилией, возрастом и телефоном может выглядеть следующим образом:

    $sp->write('', array('forename'=>'Bob','surname' =>'Smith', 'age'=>40, 'phone'=>'(00000) 000000' ));

Вы также можете запустить несколько операций записи, используя:

    $sp->writeMultiple('', array(array('forename' => 'James'),array('forename' => 'Steve')));

Редактирование строк

Для редактирования строки вам необходимо иметь ее идентификатор. Предполагая, что в приведенном выше ряду указан идентификатор 5, мы можем изменить имя Боба на Джеймса с помощью:

<code>    $sp->update('','5', array('forename'=>'James'));/code>

Как и в случае метода записи, вы также можете запустить несколько операций обновления, используя:

    $sp->updateMultiple('', array(    array('ID'=>5,'job'=>'Intern'),array('ID'=>6,'job'=>'Intern')));

При использовании updateMultiple каждый элемент ДОЛЖЕН иметь идентификатор.

Удаление строк

Для удаления строки требуется идентификатор, а также имя списка. Чтобы удалить запись для Джеймса с идентификатором 5, вы должны использовать:

    $sp->delete('', '5');

Если вы хотите удалить несколько записей одновременно, массив идентификаторов также может быть передан в несколько методов удаления

    $sp->deleteMultiple('', array('6','7','8'));

Вспомогательные методы

PHP SharePoint API содержит несколько вспомогательных методов, облегчающих проверку определенных значений в правильном формате для некоторых специальных типов данных SharePoint.

DATETIME В метод DateTime можно передать текстовую дату

    $date = \Thybag\SharepointApi::dateTime("2012-12-21");

Или метка времени Unix

    $date = \Thybag\SharepointApi::dateTime(time(), true);

Поиск и устранение неисправностей

Невозможно найти упаковщик "https"

Если вы получаете эту ошибку, это обычно означает, что php_openssl (необходим для скручивания URL-адресов https) не включен на вашем веб-сервере.На многих локальных веб-серверах (таких как XAMPP) вы можете просто открыть файл php.ini и раскомментировать строку php_openssl (т.е. удалить; перед ней).

Примечание. Если вы используете SharePoint Online и у вас естьОшибки SSL. Извлеките последнюю версию, которая была изменена с SSL v3 на TLS для сетевых подключений SharePoint.

Добавьте эту строку в файл composer.json

thybag/php-sharepoint-lists-api: dev-develop</code>

Вы можете выполнить CRUD (Операция создания / чтения / обновления / удаления с указанным выше API-интерфейсом SharePoint.

Ссылочная URL-ссылка: https://github.com/thybag/PHP-SharePoint-Lists-API

0 голосов
/ 17 октября 2011

Самый простой способ получить данные SharePoint из PHP - это, вероятно, REST API .

0 голосов
/ 16 октября 2011

База данных Sharepoint - это не что иное, как MS SQL Server. Если вы знаете имя сервера, вы можете подключиться к нему так же, как и к серверу MSSQL из PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...