繁体   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