簡體   English   中英

如何連接 mssql 服務器並使用 php 獲取值

[英]How can I connect mssql server and get values with php

我是 php 的新手,我嘗試為 db 中的人們制作旅行信息日歷,並希望在日歷當天顯示這些信息,所以我的問題是連接 MSSQL Server 並從 db 中獲取值。我的 php 頁面可以正常工作localhost(wampp) 和我的日歷視圖完美,但無法從 DB 獲取值。它沒有給出錯誤。但無法提取數據。請您幫我找出我的錯誤。謝謝。

連接.php;

<?php
        class DBO   
        {
            private $server = "servername";
            private $db_name = "dbname";


            private $password = "pass";


            private $username = "username";


            private $conn;


            private $database;


            function Connect()      
            { 
                $this->conn = mssql_connect($this->server, $this->username, $this->password)
               or die("Couldn't connect to SQL Server on " . $this->server);

        $this->database = mssql_select_db($this->db_name, $this->conn)
                    or die("Couldn't open database " . $this->db_name);
            }
     function RunSql($sqlQuery)
            {
                  return mssql_query($sqlQuery);
            }
        }
    ?>

查詢代碼;

<?php
    include_once("db_connect.php");
    $DBO = new DBO();  
    $DBO->Connect();    
    $query = "SELECT ID, TYPE, STARTDATE, ENDDATE FROM TABLENAME";    
    $query_results = $DBO->RunSql($query)
        or die('Error in $query_menu. Error code :' . mssql_get_last_message() );
        $calendar = array();
    while( $results = mssql_fetch_assoc($query_menu_results) )
    { 
    $calendar[] = array('ID' =>$rows['ID'],'TYPE' => $rows['TYPE'],'url' => "#","class" =>'event-important','start' => "$start",'end' => "$end");
    }
$calendarData = array(
    "success" => 1, 
    "result"=>$calendar);
echo json_encode($calendarData);
exit;
?>
<?php

我相信你的問題是通過執行 SQL...

$query_results = $DBO->RunSql($query)

...但通過...使用它

while( $results = mssql_fetch_assoc($query_menu_results) )

基本上,$query_results 變成了 $query_menu_results。

我使用它的一個變體來測試 MsSQL 連接:

<?php

// connect to the server
$dbconn = mssql_connect('SEVER_NAME_OR_IP', 'MsSQL-User', 'MsSQL-User-Password');

if (!$dbconn) {
    $message='unable to connect to the database: ' . mssql_get_last_message();
    die($message);
}


// select the database
if (!mssql_select_db('DATABASE_NAME', $dbconn)) {
    die('Unable to select the database!');
}

// execute a query. NOTE: Never use string concatenation in SQL statements. EVER!!!
$sql = "select * from information_schema.tables;";
$query = mssql_query($sql, $dbconn);


// consume the results
echo "<table border='1'><tr><th>Column A</th><th>Column B</th></tr>";
while ($row = mssql_fetch_row($query)) {
 echo "<tr><td>";
 echo $row[0];
 echo "</td><td>";
 echo $row[1];
 echo "</td></tr>";
}
echo "</table>";


// clean up
mssql_free_result($query);
mssql_close($dbconn);

?>

安全說明:最后我檢查, mssql*不支持准備好的語句。 請參閱PDOsqlsrv* 這個問題有關於 MsSQL 准備好的語句的好信息。

解決方案:

我已經復制了您的代碼,並且發現了以下錯誤:

  • include_once("db_connect.php"); 必須是include_once("connect.php");
  • while ($results = mssql_fetch_assoc($query_menu_results)) {必須是while ($results = mssql_fetch_assoc($query_results)) {
  • 'ID' =>$rows['ID'],必須是'ID' => $results['ID'],
  • 'TYPE' => $rows['TYPE'],必須是'TYPE' => $results['TYPE'],
  • 缺少$start$end變量;

工作示例:

示例基於您的代碼。 我已經在評論中留下了你的錯誤。 表定義只是為了進行工作查詢。

數據庫:

CREATE TABLE [dbo].[TABLENAME] (
    [ID] [numeric](10, 0) NULL,
    [TYPE] [numeric](10, 0) NULL,
    [STARTDATE] datetime NULL,
    [ENDDATE] datetime NULL
) ON [PRIMARY]

INSERT [TABLENAME] (ID, TYPE, STARTDATE, ENDDATE)
VALUES (1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)

INSERT [TABLENAME] (ID, TYPE, STARTDATE, ENDDATE)
VALUES (1, 1, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)

SELECT ID, TYPE, STARTDATE, ENDDATE 
FROM [TABLENAME]

連接.php

<?php
    class DBO {
        private $server = "servername";
        private $db_name = "dbname";
        private $password = "pass";
        private $username = "username";

        private $conn;
        private $database;

        function Connect() { 
            $this->conn = 
                mssql_connect($this->server, $this->username, $this->password) or 
                die("Couldn't connect to SQL Server on " . $this->server);

            $this->database = 
                mssql_select_db($this->db_name, $this->conn) or 
                die("Couldn't open database " . $this->db_name);
        }

        function RunSql($sqlQuery) {
            return mssql_query($sqlQuery);
        }
    }
?>

查詢.php

<?php
    //include_once("db_connect.php");
    include_once("connect.php");

    $DBO = new DBO();  
    $DBO->Connect();    

    $query = "SELECT ID, TYPE, STARTDATE, ENDDATE FROM [TABLENAME]";    
    $query_results = 
        $DBO->RunSql($query)
        or die('Error in $query_menu. Error code :' . mssql_get_last_message() );

    $calendar = array();
    //while ($results = mssql_fetch_assoc($query_menu_results)) { 
    while ($results = mssql_fetch_assoc($query_results)) { 
        $calendar[] = array(
            //'ID' =>$rows['ID'],
            'ID' => $results['ID'],
            //'TYPE' => $rows['TYPE'],
            'TYPE' => $results['TYPE'],
            'url' => "#",
            "class" => 'event-important',
            //'start' => "$start",
            //'end' => "$end"
        );
    }
    $calendarData = array(
        "success" => 1, 
        "result"=>$calendar
    );
    echo json_encode($calendarData);
    exit;
?>

輸出:

{
"success":1,
"result":[
    {"ID":"1","TYPE":"1","url":"#","class":"event-important"},
    {"ID":"1","TYPE":"1","url":"#","class":"event-important"}
]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM