PHP SQL Server не генерирует ошибку или не работает

#php #sql-server #php-mssql

#php #sql-сервер #php-mssql

Вопрос:

Я новичок в PHP, поэтому прошу прощения за невежество. Я попытался подключить PHP к моей базе данных SQL Server на моем компьютере. Я хотел бы, чтобы таблица отображалась на веб-странице, так что это раннее тестирование и изучение. Мой код

 <!DOCTYPE html>
<html>
<head>
    <title>Test</title>
</head>
<body>
<table border="5" bgcolor="white" width="300" align="center">
<tr>
<th bgcolor="grey">InputType</th>
<th bgcolor="">Valid</th>
</tr>
<?php
$myServer = "localhost";
$myUser = "xxxxx";
$myPass = "xxxx";
$myDB = "xxxxxxxxx"; 
//Connection to the database
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer"); 
//Select a database to work with
$selected = mssql_select_db($myDB, $dbhandle)
or die("Couldn't open database $myDB"); 
//Declare the SQL statement that will query the database
$query = "SELECT inputtype, valid FROM dbo.eqinputs";
//Execute the SQL query and return records
$result = mssql_query($query)
or die('A error occured: ' . mysql_error());
//Show result
while ( $rows = mssql_fetch_array($result) )
      {
    $InputType=$rows['InputType'];
    $Valid=$rows['Valid'];
echo "<tr> 
    <td>$InputType</td>
    <td>$Valid</td>
  </tr>";
      }
?>
</table>
</body>
</html>
  

Когда я делаю это и сохраняю как .php, вот результат

введите описание изображения здесь

Как вы можете видеть, ошибка в самом коде, а также в подключении к моей базе данных. Будем признательны за любую помощь

Комментарии:

1. mysql_error() не будет работать с SQL Server. Библиотека mssql_ имеет свою собственную функциональность сообщения об ошибках

2. в любом случае, состояние вашей страницы на скриншоте предполагает, что, возможно, PHP-скрипт на самом деле не выполняется, и браузер пытается разобрать его как HTML вместо этого. Убедитесь, что вы действительно правильно установили PHP и интегрировали его со своим веб-сервером (вы можете поискать в Google инструкции для вашей конкретной операционной системы и выбрать веб-сервер), и что вы разместили файл .php в допустимом месте в корневой папке веб-сервера. И, очевидно, вам нужно обслуживать страницу поверх, http:// не file:/// или что-нибудь в этом роде

Ответ №1:

Похоже, что ваш PHP-файл анализируется как HTML. Вам нужно сделать следующее:

  1. Установите и настройте PHP
  2. Установите соответствующее расширение PHP. На основе вашего кода ( mssql_ функций) вам необходимо установить расширение MSSQL (обратите внимание, что эта функция была УДАЛЕНА в PHP 7.0.0). Другой вариант — подключиться к SQL Server с драйвером PDO PHP для SQL Server.

Пример с расширением MS SQL:

 <!DOCTYPE html>
<html>
<head>
    <title>Test</title>
</head>
<body>
    <table border="5" bgcolor="white" width="300" align="center">
    <tr>
    <th bgcolor="grey">InputType</th>
    <th bgcolor="">Valid</th>
    </tr>

<?php
$myServer = "localhost";
$myUser   = "xxxxx";
$myPass   = "xxxx";
$myDB     = "xxxxxxxxx"; 

// Connection to the database
$dbhandle = mssql_connect($myServer, $myUser, $myPass) or die("Couldn't connect to SQL Server on $myServer"); 
$selected = mssql_select_db($myDB, $dbhandle) or die("Couldn't open database $myDB"); 

// Declare the SQL statement that will query the database
$query = "SELECT inputtype, valid FROM dbo.eqinputs";
$result = mssql_query($query) or die('Error message: ' . mssql_get_last_message());

//Show result
while ($rows = mssql_fetch_array($result)) {
    $InputType = $rows['InputType'];
    $Valid = $rows['Valid'];
    echo "<tr><td>".$InputType."</td><td>".$Valid."</td></tr>";
}
?>
    </table>
</body>
</html>
  

Пример с драйвером PDO PHP для SQL Server:

 <!DOCTYPE html>
<html>
<head>
    <title>Test</title>
</head>
<body>
    <table border="5" bgcolor="white" width="300" align="center">
    <tr>
    <th bgcolor="grey">InputType</th>
    <th bgcolor="">Valid</th>
    </tr>
<?php
# Connection info
$myServer = "localhost";
$myUser   = "xxxxx";
$myPass   = "xxxx";
$myDB     = "xxxxxxxxx"; 

# Connection
try {
    $dbh = new PDO("sqlsrv:server=$myServer;Database=$myDB", $myUser, $myPass);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch( PDOException $e ) {
    die( "Error connecting to SQL Server. ".$e->getMessage());
}

# Statement
try {
    $sql = "SELECT inputtype, valid FROM dbo.eqinputs";
    $stmt = $dbh->query($sql);
    while ($row = $stmt->fetch( PDO::FETCH_ASSOC )) {
        echo "<tr><td>".$row['InputType']."</td><td>".$row['Valid']."</td></tr>";
    }
    echo "<br>";
} catch( PDOException $e ) {
    die( "Error executing stored procedure: ".$e->getMessage());
}
$stmt = null;

# End
$dbh = null;
?>
    </table>
</body>
</html>