#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. Вам нужно сделать следующее:
- Установите и настройте PHP
- Установите соответствующее расширение 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>