【问题标题】:How to connect to mssql with php?如何使用 php 连接到 mssql?
【发布时间】:2016-02-13 21:19:31
【问题描述】:

我得到了所有插件的工作,一些非官方的 php(5.6) 的 pdo 驱动程序

这是我的 php;

<?php
$head =  $_POST['title'];
$bread = $_POST['html'];
$author = $_POST['selectlist1'];
$postdate = date('y-m-d h:i:s',time());
$cat = $_POST['selectlist2'];
$serverName = 'SERVER\SQLEXPRESS';
$db = new PDO('sqlsrv:Server=$serverName;Database=blog', 'sa', '******');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = 'INSERT INTO dbo.blog_posts (blog_title, blog_post, blog_author, blog_date, blog_category) VALUES (:head, :bread, :author, :postdate, :cat)';

$query = $db->prepare( $sql );
$query->execute( array(':head'=>$head, ':bread'=>$bread, ':author'=>$author, ':postdate'=>$postdate, ':cat'=>$cat ) );

?>

我得到了错误:

致命错误:带有消息“SQLSTATE[08001]”的未捕获异常“PDOException”:[Microsoft][SQL Server Native Client 11.0]Named Pipes Provider:无法打开与 SQL Server [53] 的连接。 ' 在 C:\inetpub\wwwroot\blog\post.php:9 堆栈跟踪:#0 C:\inetpub\wwwroot\blog\post.php(9): PDO->__construct('sqlsrv:Server=$.. .', 'sa', '*****') #1 {main} 在第 9 行的 C:\inetpub\wwwroot\blog\post.php 中抛出

我已经启用了命名管道等我不知道我做错了什么......我已经用谷歌搜索了几个小时...... 而不是 $serverName 我尝试使用 localhost,127.0.0.1 等,但我无法让它工作!

经过进一步挖掘后,我发现命名管道提供程序:无法打开与 SQL Server [53] 的连接是某种网络问题,不知道是什么问题...

好吧,我想我正在路上,现在我明白了:

致命错误:带有消息的未捕获异常“PDOException” 'SQLSTATE[22007]:[Microsoft][SQL Server Native Client 11.0][SQL [Server]nvarchar 数据类型到 datetime 数据类型的转换 导致超出范围的值。在 C:\inetpub\wwwroot\blog\post.php:15 堆栈跟踪:#0 C:\inetpub\wwwroot\blog\post.php(15): PDOStatement->execute(Array) #1 {main} 在第 15 行的 C:\inetpub\wwwroot\blog\post.php 中抛出

【问题讨论】:

  • 你的 PHP 代码是在 Windows 机器上吗?
  • @JeroenFlamman 是的先生
  • 糟糕,这是一个不必要的问题 - 错误清楚地指出了 'C:\inetpub\wwwroot'
  • 我正在运行我自己的带有 mysql 和 mssql 的 iis 服务器,我想将 abit 与两个 db 处理程序混合使用
  • 我在 Linux 机器上的 mssql 连接方面有更多经验 - 恐怕我在这里帮不上什么忙..

标签: php sql-server pdo


【解决方案1】:

我对所有内容都做了很多更改,但现在它终于可以工作了,最后我的代码如下所示:

<?php
error_reporting(E_ALL); ini_set('display_errors', 1);
$head =  $_POST['title'];
$bread = $_POST['html'];
$author = $_POST['selectlist1'];
$postdate = date('Y-m-d H:i:s');
$cat = $_POST['selectlist2'];
$db = new PDO('sqlsrv:server=localhost;Database=blog', '****', '******');
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$sql = 'INSERT INTO dbo.blog_posts (blog_title, blog_post, blog_author, blog_date, blog_category) VALUES (:head, :bread, :author, :postdate, :cat)';

$query = $db->prepare( $sql );
$query->execute( array(':head'=>$head, ':bread'=>$bread, ':author'=>$author, ':postdate'=>$postdate, ':cat'=>$cat ) );

?>

所以基本上我一直尝试的事情确实奏效了,我在 ms sql server management studio 等中更改了一些所有权,我认为这对我有用!

【讨论】:

    猜你喜欢
    • 2015-12-30
    • 1970-01-01
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多