MySQL PHP整数列未作为字符串返回
我真的不知道这是MySQL还是PHP的问题。在我的live server上,整数列作为字符串返回,这是我一直使用的方式。但是,在我的本地服务器上,它们以整数而不是字符串的形式返回 我四处搜索,但除了关于类型转换的注释外,没有任何关于某种配置参数的内容。我使用的是Laravel4,在本地和y live服务器上都使用相同的代码 我不想对所有内容进行类型转换,只希望将其作为字符串返回。我在本地使用wamp,在我的服务器和本地之间使用mysql和php版本,或者非常接近,所以我想这是某种配置 编辑: 代码是直截了当的:MySQL PHP整数列未作为字符串返回,php,mysql,pdo,laravel,wamp,Php,Mysql,Pdo,Laravel,Wamp,我真的不知道这是MySQL还是PHP的问题。在我的live server上,整数列作为字符串返回,这是我一直使用的方式。但是,在我的本地服务器上,它们以整数而不是字符串的形式返回 我四处搜索,但除了关于类型转换的注释外,没有任何关于某种配置参数的内容。我使用的是Laravel4,在本地和y live服务器上都使用相同的代码 我不想对所有内容进行类型转换,只希望将其作为字符串返回。我在本地使用wamp,在我的服务器和本地之间使用mysql和php版本,或者非常接近,所以我想这是某种配置 编辑: 代
$word = Word::first(array('status'));
echo $word->status === '1' ? 'true' : 'false'; // returns false
echo $word->status === 1 ? 'true' : 'false'; // returns true
对于我的MySQL和PHP版本,它们几乎相同:
直播:php5.4.20,mysql5.5.34
本地:php5.4.16,mysql5.6.12此外,使用三重相等运算符时也会进行类型检查。在进行任何值比较之前,将比较两个实体的类型。如果这两种类型不匹配,将立即返回false
在这种情况下,使用
=
将返回一致的结果,但在JavaScript中经常使用=
来维护数据类型的完整性。此外,使用三重相等运算符==
时也会进行类型检查。在进行任何值比较之前,将比较两个实体的类型。如果这两种类型不匹配,将立即返回false
在这种情况下,使用
==
将返回一致的结果,但==
通常在JavaScript中用于维护数据类型完整性。我仍然不清楚我的环境之间的差异可能在哪里,但至少在Laraval中,您可以在数据库配置中设置pdo属性:
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'xxxxxxx',
'username' => 'xxxxxxx',
'password' => 'xxxxxxx',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'options' => array(
PDO::ATTR_STRINGIFY_FETCHES => true
)
),
我想这至少有助于保持它的一致性,不管其他开发人员在本地安装了什么。我仍然不清楚我的环境之间的差异可能在哪里,但至少在Laraval中,您可以在数据库配置中设置pdo属性:
'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'xxxxxxx',
'username' => 'xxxxxxx',
'password' => 'xxxxxxx',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'options' => array(
PDO::ATTR_STRINGIFY_FETCHES => true
)
),
我想这至少有助于保持它的一致性,不管其他开发人员在本地安装了什么。在Laravel 4中,您可以设置为规范化从数据库返回的值。例如:
//Word.php
class Word extends Eloquent
{
//...
public function getStatusAttribute($value)
{
return strval($value);
}
}
在Laravel4中,可以设置为规范化从数据库返回的值。例如:
//Word.php
class Word extends Eloquent
{
//...
public function getStatusAttribute($value)
{
return strval($value);
}
}
请显示您的代码。是什么导致了问题?您使用的是相同的PHP和MySQL版本,尤其是mysqli扩展(如果您使用该版本的话)版本吗?请看一看,我认为您的问题与两者之间的PHP版本差异有关environments@Asok好像是我的问题,但它显示了作为php代码启用/禁用的示例。我在live和local上都有相同的代码,所以这对我来说有点奇怪。请展示您的代码。是什么导致了问题?您使用的是相同的PHP和MySQL版本,最重要的是mysqli扩展(如果您使用该版本的话)版本吗?请看,我认为您的问题与两者之间的PHP版本差异有关environments@Asok这似乎是我的问题,但它显示了作为php代码启用/禁用的示例。我在live和local上都有相同的代码,所以这对我来说有点奇怪。