2013-05-04 83 views
-1

首先,我是一个新手web开发人员。PHP 5.4可以在PHP 5.3上运行配置服务器

我的问题是“使用PHP 5.4开发的网站可以在PHP 5.3配置的服务器上运行?”

(详细说明) 我自己配置​​的Apache 2.4中,MySQL 5.6和Windows PHP 5.4.12。一切都好。但是当我将我的网站文件夹更改为另一台配置了WAMPserver的机器时,会发生错误。这个WAMPserver配置了Apache 2.2.11,PHP 5.3和MySQL 5.1.36。

我在这台机器上安装MySQL 5.6并且数据库连接成功。但“分析错误发生的代码”,如

$country = mysql_fetch_row(queryMySQL("----"))[0];

此外,它表现出其他错误,如“表‘emp.productcateogry’不存在”。

请给我一些建议。

+1

PHP 5.3.x不支持在函数调用时访问数组返回 - 因此是错误。 – Jon 2013-05-04 07:56:56

+0

我所知道的是,将旧版本与新版本结合起来,并期望它的工作是粗略的。 – SchautDollar 2013-05-04 07:57:06

+0

**不再支持** mysql_ *'函数,它们是[**官方不推荐使用的**](https://wiki.php.net/rfc/mysql_deprecation),**不再维护**并且将来会[**删除**](http://php.net/manual/en/function.mysql-connect.php#warning)。您应该使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/msqli)更新您的代码,以确保您的项目未来的功能。 – Arjan 2013-05-04 08:21:26

回答

1

简短的回答是:不,你不应该指望它,尤其是在使用PHP 5.4的new features你的代码中。

你指的是与特定错误:

分析错误发生的代码

是因为该行

$country = mysql_fetch_row(queryMySQL("----"))[0]; 

是使用新的功能:

有趣ction数组语法

这之前,PHP 5.4,不得不用一个临时变量,以访问返回的具体指标,即:

$country_temp = mysql_fetch_row(queryMySQL("----")); 
$country = $country_temp[0]; 

现在是,你是一个新手开发人员,你应该注意一些事情。第一个也是最重要的一点就是mysql_功能deprecated给予注:

这个扩展不赞成PHP 5.5.0的,并会在将来被移除。相反,应该使用MySQLi或PDO_MySQL扩展。

换句话说,使用PDO如果想要使用准备的语句,或MySQLi如果不是。在示例代码中使用PDO并只获取一列的另一个优点是,一旦连接,就可以使用函数PDOStatement::fetchColumn()来获取您现在正在尝试执行的唯一一列。

无论如何,我希望这个解释能够帮助你理解为什么你不能回到PHP 5.3.x,如果使用特定的PHP 5.4功能 - 以及一些关于如何改进数据库连接和可用的功能,可以帮助你在不使用随PHP 5.4提供的“数组取消引用”的情况下获得所需的结果。^^

+1

在这种情况下,临时变量不是必需的。可以使用'list($ country)= mysql_fetch_row(...)'。 – cleong 2013-05-04 11:35:53

+0

尽管如此,向不熟悉该语言的程序员介绍['list'](http://us2.php.net/manual/en/function.list.php)可能会导致混淆运行。使用临时变量显示了OP熟悉的直接分配方式。 ^^ – Jon 2013-05-04 11:41:42