不同的服务器,不同的数据类型与完全相同的代码

时间:2015-08-05 07:38:22

标签: php mysql apache casting

我正在运行从数据库服务器获取数据的代码,一切都在本地工作正常。但是当我把它推到网上时,它已不再适用了。

我想我知道问题的来源。这是我在本地获得的数据:

object(stdClass)#451 (14) {
  ["matter_created_actionstep_c"]=>
  string(1) "1"
  ["trust_receipt_sent_c"]=>
  string(1) "1"
  ["scope_complete_c"]=>
  string(1) "0"
  ["transferred_trust_to_current_c"]=>
  string(1) "0"
}

当我在服务器上推送它时,我得到的结果是:

object(stdClass)#451 (14) {
 ["matter_created_actionstep_c"]=>
  int(1)
  ["trust_receipt_sent_c"]=>
  int(1)
  ["scope_complete_c"]=>
  int(0)
  ["transferred_trust_to_current_c"]=>
  int(0)
}

您是否知道任何会导致此排版更改的apache配置?

唯一不同的项目文件是conf文件:

本地:

DB_HOST=1.1.1.1

在服务器上:

DB_HOST=localhost

提前致谢。

1 个答案:

答案 0 :(得分:2)

这可能是由很多问题引起的。也许是不同的PHP版本,也许数据来自数据库,数据库驱动程序的版本不同,......

我想说应用程序是罪魁祸首。 PHP是无类型的,这意味着在大多数情况下,没有人关心变量的实际类型。在您的情况下,只要行为相同(例如2等于"2"),几乎没有人关心价值是2==2还是2=="2"。如果应用程序在某些变量中需要某些类型,则应确保变量包含这些类型!这不是这种情况。

检查应用程序以及将值写入对象的代码部分。这部分代码应该在将值放入变量之前将值转换为所需类型。

然而(或者如果对象来自其他地方),使代码对类型更加宽容可能是有意义的,即只要不必要就不依赖于特殊类型。根据我的经验,只有极少数情况下变量的类型才真正重要。

相关问题