2012-12-27 65 views
-1

我在Windows 2012服务器上使用SQL 2012中的数据库。我在我的代码中使用连接字符串连接到它时遇到了一些问题。我已经通过网络对它进行了测试,并且使用Visual Basic和Excel无任何问题地连接到它。我很难过,因为我无法连接到它,它与我的代码有关,我确信它。额外的一双眼睛会有所帮助。2012 SQL连接字符串500内部服务器错误

<?php 
    $database_server = "servername\databaseservername"; 
    $database_port = "1433"; 
    $database_authentication = "SQL Server"; 
    $database_user = "username"; 
    $database_password = "password"; 
    $database_name = "DatabaseName"; 
    $root = $_SERVER["DOCUMENT_ROOT"]; 
?> 

<?php 
require_once("includes/inc_files.php"); 
$current_page = "find"; 
$filter = coalesce($_GET["filter"], "Events"); 
$search = coalesce($_GET["search"], ""); 
$latitude = coalesce($_GET["latitude"], $_SESSION["latitude"], ""); 
$longitude = coalesce($_GET["longitude"], $_SESSION["longitude"], ""); 
if (!empty($latitude) && !isset($_SESSION["latitude"])) $_SESSION["latitude"] = 
$latitude; 
if (!empty($longitude) && !isset($_SESSION["longitude"])) $_SESSION["longitude"] = 
$longitude; 

$query = preg_replace("#[^a-z 0-9?!]#i", "", $search); 
$do_search = false; 
if ($filter == "Events" && !empty($latitude) && !empty($longitude)) { 
$do_search = true; 
$radius = 40; 
$sql_columns = " 
    Events.ID AS eventid, 
    Events.VenueID AS venueid, 
    Events.Title AS title, 
    Events.EventDate AS date, 
    Venues.Name AS venue, 
    Venues.City AS city, 
    ROUND(dbo.GETDISTANCE(Venues.Lat, Venues.Lon, $latitude, $longitude, 'Miles'), 0) AS distance, 
    Venues.ImageName AS photo"; 
$sql_where = " 
    " . (!empty($search) ? "Events.Tags LIKE '%$query%' AND " : "") . "Events.EventDate >= GETDATE() AND CAST(CAST(Events.VenueID AS varchar(10)) AS bigint) IN (
     SELECT ID 
     FROM LiveData 
     WHERE ROUND(dbo.GETDISTANCE(Lat, Lon, $latitude, $longitude, 'Miles'), 0) BETWEEN 0 AND $radius 
    )"; 
$sql = " 
    SELECT $sql_columns 
    FROM LiveData AS Events 
    INNER JOIN LiveData AS Venues ON CAST(CAST(Events.VenueID AS varchar(10)) AS bigint) = Venues.ID 
    WHERE $sql_where"; 
$query_recordsets = $database_mssql->query($sql); 
$query_data = $query_recordsets[0]; 
$page = !empty($_GET["page"]) ? (int) $_GET["page"] : 1; 
$per_page = 20; 
$total_count = count($query_data); 
$pagination = new Pagination($page, $per_page, $total_count); 
$sql = " 
    SELECT * 
    FROM (
     SELECT ROW_NUMBER() OVER(ORDER BY Events.EventDate ASC) AS row, 
       $sql_columns 
     FROM LiveData AS Events 
     INNER JOIN LiveData AS Venues ON CAST(CAST(Events.VenueID AS varchar(10)) AS bigint) = Venues.ID 
     WHERE $sql_where 
    ) AS a 
    WHERE row >= {$pagination->offset()} AND row < {$pagination->offset()} + $per_page"; 
$query_recordsets = $database_mssql->query($sql); 
$query_data = $query_recordsets[0]; 
} 
else if ($filter == "People") { 
$do_search = true; 
$sql = " 
    SELECT username, 
      first_name, 
      last_name, 
      country 
    FROM users 
    WHERE username LIKE '%$query%' OR CONCAT(first_name, ' ', last_name) LIKE '%$query%'"; 
$query_data = User::find_by_sql($sql); 
$page = !empty($_GET["page"]) ? (int) $_GET["page"] : 1; 
$per_page = 20; 
$total_count = count($query_data); 
$pagination = new Pagination($page, $per_page, $total_count); 
$sql .= " LIMIT $per_page OFFSET {$pagination->offset()}"; 
$query_data = User::find_by_sql($sql); 
} 
?> 

我在内部托管所有这些内容并将其推送到网络上。当我在我的浏览器中使用localhost查看它时,我收到500内部服务器错误。

任何意见都会很棒!

+0

事件日志中的任何错误? –

+0

您发布了连接凭证增强版,但没有用于连接的代码。它是什么? PDO?你可以将代码添加到问题中吗? – hek2mgl

+0

对不起,我拖着另一个有优先权的项目。尤里·加兰特,事件日志中没有错误。 @ hek2mgl,我会发布上面用于连接数据库的代码。 –

回答

0

只是为此线程添加一个答案,它看起来像IIS和MSSQL 2012安装不正确。与数据库端口也有冲突。 MySQL和MSSQL都使用端口1433.