2014-01-17 1 views
0

Я действительно не знаю, является ли это проблемой MySQL или PHP. На моем живом сервере целые столбцы возвращаются как строки, которые я всегда имел. Однако на моем локальном сервере они возвращаются как целые числа вместо строк.MySQL PHP Целочисленные столбцы не возвращаются как строка

Я искал вокруг, но кроме комментариев о typecasting, нет ничего о некотором конфигурационном параметре. Я использую laravel 4, и это тот же код на локальном и y-сервере.

Я не хочу придумывать все и просто предпочитаю, чтобы он возвращался как строки. Я использую wamp локально и версии для mysql и php между моим сервером и локальными или очень близкими, так что я думаю, что это какая-то конфигурация где-то?

EDIT:

код прямо вперед:

$word = Word::first(array('status')); 

echo $word->status === '1' ? 'true' : 'false'; // returns false 
echo $word->status === 1 ? 'true' : 'false'; // returns true 

Для моих версий MySQL и PHP они почти одинаковы:

Live: php5.4.20, mysql5.5.34 Локальный: php5.4.16, mysql5.6.12

+0

Пожалуйста, покажите свой код. –

+0

Что вызывает проблему? – Ryan

+0

Вы используете ту же версию PHP и MySQL, и выше, расширение mysqli (на случай, если вы используете эту) версию? –

ответ

1

Также существует проверка типов при использовании тройного уравнения al оператор ===. Перед проведением сравнения сравниваются типы двух объектов. Если два типа не совпадают, то возвращается false.

Использование == будет возвращать согласованные результаты в этом случае, но === часто используется в JavaScript до , сохраняя целостность данных.

3

Я до сих пор не совсем понятно, где это несоответствие может быть между моей среде, но в 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 
    ) 
), 

Я предполагаю, что это по крайней мере, помогает поддерживать его в соответствии с тем, что другие разработчики могут устанавливать локально.

0

В Laravel 4 вы можете установить Accessors & Mutators для нормализации значений, возвращаемых из базы данных. Пример:

//Word.php 

class Word extends Eloquent 
{ 

    //... 

    public function getStatusAttribute($value) 
    { 
     return strval($value); 
    } 
} 
Смежные вопросы