通过PHP连接到Sharepoint数据库

Mo3*_*o3z 8 php database connection sharepoint

我不熟悉Sharepoint.我想使用PHP查询或读取Sharepoint数据库.

有没有办法可以做到这一点?

谢谢你的支持.任何帮助是极大的赞赏.

int*_*t32 6

我强烈建议使用SharePoint WebServices ...除非有正当理由(即性能)我不会触及数据库.引用这个答案:

  1. 安装SharePoint时,您同意的EULA完全不支持此功能.
  2. 在将任何修补程序或Service Pack应用于SharePoint后,您的查询无法保证可以正常工作,因为Microsoft可以随时更改数据库架构.
  3. 直接查询数据库会给服务器带来额外的负担,从而导致性能问题.
  4. 针对数据库的直接SELECT语句在默认事务级别采用共享读锁定,因此您的自定义查询可能会导致死锁,从而导致稳定性问题.
  5. 您的自定义查询可能会导致检索到错误的数据.

如果您想了解更多关于不应该查询数据库的原因,这里有一篇非常好的文章

使用PHP查询SharePoint WebService


Eri*_*itz 5

您应该考虑使用Camelot PHP Tools for SharePoint,它是专门为SharePoint列表构建的Camelot XML格式的详细文档php框架.

文档和下载

您还需要Camelot SharePoint集成工具包,http://camelottoolkit.codeplex.com/和Camelot .NET Connector(http://www.bendsoft.com/net-sharepoint-connector/).

在可以访问SharePoint服务器的框上安装Connector,这可能是与SharePoint服务器相同的服务器,然后将Integration Toolkit安装在与Connector相同的服务器上.设置集成工具包中包含的集成服务(按照说明进行操作),然后就完成了.网站上也有一些说明视频.

使用它的好处是,您可以使用常见的SQL查询通过API与SharePoint列表和库进行通信,从不使用底层的mssql数据库.

使用SQL从SharePoint中选择数据

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

按列表和视图名称从SharePoint中选择数据

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

使用SQL和SharePointNonQuery在SharePoint中插入数据

$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'
));
Run Code Online (Sandbox Code Playgroud)

还有一些存储过程可以帮助您进行某些操作,例如文档库的高级处理

下载文件

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

$download->download_file();
Run Code Online (Sandbox Code Playgroud)

上传一个文件

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

$UploadFile = new CamelotUploadFile($args);
Run Code Online (Sandbox Code Playgroud)