PHP错误通知:尝试在第303行的C:\ code中获取非对象的属性

时间:2018-08-09 01:02:05

标签: php sql-server

我正在尝试运行PHP代码,但以下代码出现错误-

echo '<div class="container mt-4"><div class="row">'."\n";
            echo '<div class="col-md-4 mt-2">'."\n";
            echo '<h5>Basic figures</h5>'."\n";
            echo '<ul class="list-group">'."\n";

            echo "<li class='list-group-item'><i class='fa fa-database text-PMS'></i>&nbsp;Database:&nbsp;<span class='text-abc'>".$settingsProject['abc']['dbName']."</span></li>\n";

            $obj = json_decode(file_get_contents('http://'.$_SERVER['HTTP_HOST'].'/code/bin/db.php?function=getNumLocators&db='.$settingsProject['abc']['dbName']));
            echo "<li class='list-group-item'><i class='fa fa-hashtag text-PMS'></i>&nbsp;Num.locators:&nbsp;<span class='text-abc'>".$obj[0]->nLocators."</span></li>\n";

错误-

Notice
: Trying to get property of non-object in
C:\code\htdocs\Tools.php
on line
303

到昨天为止一切正常,代码上没有任何变化。但是卸载了一些旧版本的MSSQL并重新安装了dotNet Framework ...

该问题看上去重复,但并非如此,我尝试了其他问题的解决方案,但没有成功,所以提出了这个问题。

有人可以帮我解决吗?

1 个答案:

答案 0 :(得分:0)

我能够使用数据库名称的NP infront修复它,这是数据库连接问题。

我在Google Chrome检查元素中遇到此错误-

SQLState = S1000, NativeError = -2146893022
Error = [Microsoft][ODBC Driver 13 for SQL Server]SQL Server Network Interfaces: The target principal name is incorrect.

然后我将代码更改如下:

公共函数__construct($ dbName){

  $bd_server = 'NP:SQLSERVERNAME';


  try {
    $this->dbh = new PDO( "sqlsrv:Server=" . $bd_server . ";Database=" .$dbName, NULL, NULL); 

    $this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  } catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
  }   }

只需在服务器名称$bd_server = 'NP:SQLSERVERNAME';的前面添加 NP: 您也可以尝试 TCP: $bd_server = 'TCP:SQLSERVERNAME';

我注意到,如果您卸载了MSSQL或DotNetFramework的某些组件,则会发生这种情况。

希望这对某人有帮助。