<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是Checked。我还检查了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;如果你正在运行PHP作为 任何Web服务器下的CGI(除了 IIS);请参阅安全性文档 的问题。替代是使用; 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的安全性 在;大多数Web服务器。剩下 undefined,PHP将其打开 默认。您可以 ;把它关掉 由您自担风险; 你可以放心 事实上,你为IIS关闭了这个 必须。; / http://php.net/cgi.force-redirect ; cgi.force_redirect = 1
如果启用了cgi.nph,它将强制执行 cgi总是发送状态:200带; 每一个要求。 PHP的默认行为 是禁用此功能。 ; cgi.nph = 1
如果cgi.force_redirect已打开, 而且你没有在Apache下运行 或Netscape; (iPlanet)Web服务器, 你可能需要设置一个环境 PHP的变量名;会寻找 要知道继续下去是可以的 执行。设置此变量可以 ;导致安全问题,知道你是什么 正在做的第一个。 ; / http://php.net/cgi.redirect-status-env ; cgi.redirect_status_env =;
cgi.fix_pathinfo提供真实 PATH_INFO / PATH_TRANSLATED支持 CGI。 PHP的;以前的行为是 将PATH_TRANSLATED设置为 SCRIPT_FILENAME,而不是grok; PATH_INFO是什么。更多 有关PATH_INFO的信息,请参阅cgi 眼镜。设置 ;这将导致1 PHP CGI修复其符合的路径 规范。一个设定;零原因 PHP表现得像以前一样。默认是 你应该修复你的脚本;使用SCRIPT_FILENAME而不是 PATH_TRANSLATED。 ; / http://php.net/cgi.fix-pathinfo ; cgi.fix_pathinfo = 1
IIS下的FastCGI(基于WINNT OS)支持的能力 冒充;安全令牌 打电话给客户这允许IIS 定义;安全上下文即 请求运行。 mod_fastcgi下 阿帕奇;目前不支持 此功能(03/17/2002);设为1 如果在IIS下运行。默认是 零。 ; / http://php.net/fastcgi.impersonate ; fastcgi.impersonate = 1;
禁用通过FastCGI的日志记录 连接。 PHP的默认行为是 启用 ;此功能。 ; fastcgi.logging = 0
cgi.rfc2616_headers配置 选项告诉PHP什么类型的标头 至 ;发送HTTP响应时使用 码。如果设置为0 PHP发送状态: 标题;由Apache支持。 当此选项设置为1时,PHP将会 发送; RFC2616兼容标头。 ; 默认值为零。 ; / http://php.net/cgi.rfc2616-headers ; cgi.rfc2616_headers = 0
;;;;;;;;;;;;;;;; ;文件上传; ;;;;;;;;;;;;;;;;
是否允许HTTP文件上传。 ; / http://php.net/file-uploads file_uploads = On
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
答案 0 :(得分:1)
我遇到了同样的问题,解决方案非常简单。 PHP 5.3中用于MS SQL Server的默认驱动程序在Windows中不再起作用。 Microsoft已发布了可以使用的驱动程序。驱动程序附带文档。
以下是可以找到下载内容的链接:http://sqlsrvphp.codeplex.com/
以下是您可以找到一些文档的链接:http://msdn.microsoft.com/en-us/library/cc296172(SQL.90).aspx
答案 1 :(得分:0)
也许php正在使用另一个像C:\ windows \ php.ini这样的ini文件,它过去发生在我身上:)
答案 2 :(得分: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;
}
}
?>
它并不完美但它对我有用