如何用php连接到mssql?

时间:2016-02-13 21:19:32

标签: php sql-server pdo

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

这是我的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 ) );

?>

我得到错误:

  

致命错误:未捕获的异常&#39; PDOException&#39; with message&#39; SQLSTATE [08001]:[Microsoft] [SQL Server Native Client 11.0]命名管道提供程序:无法打开与SQL Server的连接[53]。 &#39;在C:\ inetpub \ wwwroot \ blog \ post.php:9堆栈跟踪:#0 C:\ inetpub \ wwwroot \ blog \ post.php(9):PDO-&gt; __ construct(&#39; sqlsrv:Server = $ ...&#39;,&#39; sa&#39;,&#39; *****&#39;)#1 {main}在C:\ inetpub \ wwwroot \ blog \ post中引发。第9行的PHP

我启用了命名管道等我没有更多想法我做错了什么...我用Google搜索了几个小时... 而不是$ serverName我试过localhost,127.0.0.1 etcetc,但我不能让它工作!

经过多次挖掘后我发现Named Pipes Provider:无法打开与SQL Server的连接[53]是某种网络问题,不知道有什么问题......

Oke我认为我正在路上,现在我得到了:

  

致命错误:未捕获的异常&#39; PDOException&#39;与消息   &#39; SQLSTATE [22007]:[Microsoft] [SQL Server Native Client 11.0] [SQL   服务器]将nvarchar数据类型转换为日期时间数据类型   导致超出范围的价值。&#39;在   C:\ inetpub \ wwwroot \ blog \ post.php:15堆栈跟踪:#0   C:\ inetpub \ wwwroot \ blog \ post.php(15):PDOStatement-&gt; execute(Array)#1   {main}在第15行的C:\ inetpub \ wwwroot \ blog \ post.php中抛出

1 个答案:

答案 0 :(得分:0)

我对所有内容做了很多改动而没有做任何事情,但现在它终于有效了,最后我的代码看起来像这样:

<?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管理工作室等改变了一些所有权的东西,我认为这对我有用了!