我用 PHP开发了一个名为vishwasthali.org的网站,并将其托管在第三方服务器上的IIS7中。除了我使用MySQLi API编写的数据库访问代码外,其他一切都很好。该代码在本地主机上运行良好,但在服务器上却不行。在服务器和我的机器上使用phpinfo()
,我发现:
(1) 在我的机器上(运行在 Windows 7 32 位,Apache 主机环境),PHP 版本是5.3.8,mysqli 版本是5.0.8-dev,并且
(2)服务器端(运行Windows Server 2008,IIS7宿主环境),PHP版本为5.2.14,mysqli版本为5.0.51a。
以下是服务器上的截图phpinfo()
:
这是mysqli代码的示例。
session_start();
include_once 'code_files/conn.php';
$stmt = $mysqli->prepare('SELECT * FROM adminusers WHERE Username = ? AND `Password` = ?');
$stmt->bind_param('ss', $_POST['Username'], $_POST['Password']);
$stmt->execute();
$result = $stmt->get_result();
if($result->num_rows > 0)
........
else
........
使用echo get_class($mysqli);
确实显示mysqli。这意味着,代码确实检测到了 mysqli。但声明$stmt
没有准备好。即使$mysqli->error;
没有显示任何错误,也可能是因为 PHP 在 IIS 上运行。
现在我有两个选择,要么将数据库访问代码更改为经典的mysql API,要么通过从php.net下载最新的 PHP 二进制文件来升级服务器上的 PHP 和 MySQLi 版本。我不喜欢第一个选项(这绝对有效),希望你知道为什么。后者不在我手中。想不到这些了。
我想更换 php_mysqli.dll 可能会升级 mysqli 版本,不确定。但是PHP版本呢?
在这种情况下我能做什么。服务器上的 PHP 和 MySQLi 版本升级会解决我的问题吗?如果是,是否会影响服务器上运行的其他 PHP 网站?
提前致谢。