1
<html>
    <head>
        <title>Connecting </title>
    </head>
    <body>
        <?php
    $host = "*.*.*.*";
 $username = "xxx";
 $password = "xxx";
 $db_name = "xxx";

    $db = mssql_connect($host, $username,$password)
    or die("Couldn't Connect");
 $selected = mssql_select_db($db_name, $db)
 or die("Couldn't open database");

?>
    </body>
</html>

我的错误信息是:

致命错误:在第 12 行调用 C:\wamp\www\php\dbase.php 中未定义的函数 mssql_connect()

我在 PHP 5.3.0 上使用 WampServer 2.0

当我检查扩展时,php_mssql 被选中。我还检查了 php.ini 文件以确保它没有被注释掉。

我将文件 dbase.php 保存在 C:\wamp\www\php 中。我已尝试停止服务,关闭所有内容,然后再次运行它。我知道问题是没有以某种方式包含扩展文件。

以下是从我的 php.ini 文件中复制的。请注意,我制作了所有 http = /http 以避免发布链接。

;;;;;;;;;;;;;;;;;;;;;;;;;; ; 路径和目录;;;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2" ;include_path = ".:/php/includes" ; Windows: "\path1;\path2" include_path = "C:\wamp\bin\php\php5.3.0\ext" ; ; PHP 对 include_path 的默认设置是 ".;/path/to/php/pear" ;/http://php.net/include-path _

; PHP 页面的根目录,仅在非空时使用。; 如果 PHP 不是用 FORCE_REDIRECT 编译的,你应该设置 doc_root ;如果您在任何 Web 服务器(IIS 除外)下将 php 作为 CGI 运行;有关安全问题,请参阅文档。另一种方法是使用 ; cgi.force_redirect 配置如下;/http://php.net/doc-root doc_root =

; PHP 仅使用 /~username 打开脚本的目录;如果非空。; /http://php.net/user-dir user_dir =

; 可加载扩展(模块)所在的目录。; /http://php.net/extension-dir ; _ extension_dir = "./" ; 在窗户上:; extension_dir = "ext" extension_dir = "c:/wamp/bin/php/php5.3.0/ext/"

; 是否启用 dl() 函数。dl() 函数不起作用;在多线程服务器(例如 IIS 或 Zeus)中正确,并且是自动的;对他们禁用。; /http://php.net/enable-dl enable_dl = 关闭

; cgi.force_redirect 是提供安全运行 PHP 作为 CGI 下所必需的;大多数网络服务器。未定义,PHP 默认打开它。你可以 ; 在这里关闭它,后果自负;您可以安全地为 IIS 关闭此功能,事实上,您必须这样做。; / http://php.net/cgi.force-redirect ;cgi.force_redirect = 1

; 如果启用了 cgi.nph,它将强制 cgi 始终发送 Status: 200 with ; 每一个请求。PHP 的默认行为是禁用此功能。;cgi.nph = 1

; 如果 cgi.force_redirect 已打开,并且您没有在 Apache 或 Netscape 下运行;(iPlanet) 网络服务器,您可能需要设置 PHP 的环境变量名称;将寻找知道可以继续执行。设置这个变量可以;引起安全问题,先知道你在做什么。; /http://php.net/cgi.redirect-status-env ; cgi.redirect_status_env = ;

; cgi.fix_pathinfo 为 CGI 提供真正的 PATH_INFO/PATH_TRANSLATED 支持。PHP的; 以前的行为是将 PATH_TRANSLATED 设置为 SCRIPT_FILENAME,而不是 grok ;PATH_INFO 是什么。有关 PATH_INFO 的更多信息,请参阅 cgi 规范。环境 ; this 为 1 将导致 PHP CGI 修复其路径以符合规范。一个设置;为零会导致 PHP 的行为与以前一样。默认值为 1。你应该修复你的脚本;使用 SCRIPT_FILENAME 而不是 PATH_TRANSLATED。; /http://php.net/cgi.fix-pathinfo ; cgi.fix_pathinfo =1

; IIS 下的 FastCGI(基于 WINNT 的操作系统)支持模拟能力;调用客户端的安全令牌。这允许 IIS 定义 ; 请求运行的安全上下文。Apache 下的 mod_fastcgi ;当前不支持此功能 (03/17/2002) ;如果在 IIS 下运行,则设置为 1。默认为零。; / http://php.net/fastcgi.impersonate ;fastcgi.impersonate = 1;

; 通过 FastCGI 连接禁用日志记录。PHP 的默认行为是启用;此功能。;fastcgi.logging = 0

; cgi.rfc2616_headers 配置选项告诉 PHP 什么类型的头文件;发送 HTTP 响应代码时使用。如果设置为 0,PHP 发送 Status: header that ; 由 Apache 支持。当此选项设置为 1 时,PHP 将发送;符合 RFC2616 的标头。; 默认为零。; / http://php.net/cgi.rfc2616-headers ;cgi.rfc2616_headers = 0

;;;;;;;;;;;;;;;; ; 文件上传;;;;;;;;;;;;;;;;;

; 是否允许 HTTP 文件上传。; / http://php.net/file-uploads file_uploads = 开启

; HTTP 上传文件的临时目录(如果未指定,将使用系统默认值)。; /http://php.net/upload-tmp-dir upload_tmp_dir = "c:/wamp/tmp"

; 上传文件的最大允许大小。; /http://php.net/upload-max-filesize upload_max_filesize = 2M

另外,我的 php.ini 文件保存在:C:\wamp\bin\apache\Apache2.2.11\bin

4

3 回答 3

1

我遇到了同样的问题,解决方案很简单。用于 MS SQL Server 的 PHP 5.3 中的默认驱动程序在 Windows 中不再工作。Microsoft 已发布您可以使用的驱动程序。驱动程序附带文档。

这是您可以找到下载的链接: http: //sqlsrvphp.codeplex.com/

这是您可以找到一些文档的链接:http: //msdn.microsoft.com/en-us/library/cc296172 (SQL.90).aspx

于 2010-05-30T19:56:06.013 回答
0

好吧,既然您使用的是 PHP 5.3,那么使用 PDO 对象不是更有意义吗?像这样:

<?php

class DatabaseConn {

    static function createNewMySQLConnection() {

        try {
            $conn = new PDO("mysql:dbname=" . MYSQL_DB_DATA . "; host=" . MYSQL_DB_HOST, MYSQL_DB_USER, MYSQL_DB_PASS);
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            $x = new MyException("Failed to connect to db: " . $e->getMessage());
            $x->errorMessage();
            return null;
        }

        $conn->beginTransaction();

        return $conn;
    }

    static function createNewPgSQLConnection() {

        try {
            $conn = new PDO("pgsql:dbname=" . PGSQL_DB_DATA . "; host=" . PGSQL_DB_HOST, PGSQL_DB_USER, PGSQL_DB_PASS);
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            $x = new MyException("Failed to connect to db: " . $e->getMessage());
            $x->errorMessage();
            return null;
        }

        $conn->beginTransaction();

        return $conn;
    }

    static function createNewMsSQLConnection() {

        try {
            $conn = new PDO("dblib:dbname=" . MSSQL_DB_DATA . "; host=" . MSSQL_DB_HOST, MSSQL_DB_USER, MSSQL_DB_PASS);
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch (PDOException $e) {
            $x = new MyException("Failed to connect to db: " . $e->getMessage());
            $x->errorMessage();
            return null;
        }

        $conn->beginTransaction();

        return $conn;
    }

    static function runExecute($conn, $query) {

        try {

            $stmt = $conn->prepare($query->sql);
            if (isset($query->input) && !is_null($query->input)) {
                $stmt->execute($query->input);
                return true;
            } else {
                $stmt->execute();
                return true;
            }
        } catch (PDOException $e) {

            if (isset($query->input)) {

                $inputs = "";
                foreach ($query->input as $i) {
                    $inputs .= "'" . $i . "' ";
                }
                $msg = "$query->sql with input(s) $inputs. statement failed, rolling back: " . $e->getMessage();
            } else {
                $msg = "$query->sql . statement failed, rolling back: " . $e->getMessage();
            }
            $x = new MyException($msg);
            $x->errorMessage();
        }
        return false;
    }

    static function runPreparedQuery($conn, $query) {

        $results = null;
        try {
            $stmt = $conn->prepare($query->sql);
            if (isset($query->input) && !is_null($query->input)) {
                $stmt->execute($query->input);
            } else {
                $stmt->execute();
            }
            $results = $stmt->fetchAll();
        } catch (PDOException $e) {

            if (isset($query->input)) {

                $inputs = "";
                foreach ($query->input as $i) {
                    $inputs .= "'" . $i . "' ";
                }
                $msg = "$query->sql with input(s) $inputs. statement failed, rolling back: " . $e->getMessage();
            } else {

                $msg = "$query->sql . statement failed, rolling back: " . $e->getMessage();
            }

            $x = new MyException($msg);
            $x->errorMessage();

            return null;
        }

        return $results;
    }

    static function getLastInsertId($conn) {
        return $conn->lastInsertId();
    }

    static function closeConn($conn, $commit) {

        if ($commit) {
            $conn->commit();
        } else {
            $conn->rollBack();
        }

        $conn = null;
    }

}
?>

它并不完美,但对我有用

于 2010-07-13T14:52:35.543 回答
0

也许 php 正在使用另一个 ini 文件,如 C:\windows\php.ini,它过去曾发生在我身上 :)

于 2010-02-26T20:13:32.837 回答