为什么在MySql中有文本时没有值

时间:2014-06-12 11:09:03

标签: php mysql database backbone.js slim

我使用mysql创建了一个使用mysql的用户表:

CREATE TABLE IF NOT EXISTS `users` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(250) DEFAULT NULL,
 `department` varchar(250) NOT NULL,
 `tel` varchar(50) NOT NULL,
 `email` varchar(255) NOT NULL,
 `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
 `role` text NOT NULL,
 `other` text NOT NULL,
 `status` int(1) NOT NULL DEFAULT '1',
 PRIMARY KEY (`id`),
 UNIQUE KEY `department` (`department`)
);

然后我在Slim框架中使用这个PHP代码来创建一些RESTful api:

// GET all users route
$app->get('/users', function () {

  $sql = 'SELECT * FROM users ORDER BY name';

  try {
  $db = getConnection();
  $stmt = $db->query($sql);
  $users = $stmt->fetchAll(PDO::FETCH_OBJ);
  $db = null;

  echo '{"users":' . json_encode($users) . '}';

  } catch(PDOEXCEPTION $e) {
    echo '{"error": { text: ' . $e->getMessage() . '}}';
  }
});
后退

中的

define([
'underscore', 
'backbone'
], 
function(_, Backbone) {

  return Backbone.Model.extend({

    //urlRoot: 'scripts/data/users',

    defaults: {
        id: 0,
        name: 'anon',
        department: 'Agency Anon',
        tel: '0207 123 45 67',
        email: 'anon@sample.com',
        date: '1 January 2014',
        role: 'Snr Developer',
        other: 'Lorem ipsum',
        status: 0
    }
  });
});

所有这些都按预期工作,即所有字段都返回例外结果,但在firebug控制台中返回空值的roleother字段除外。

我得到的结果(注意roleother,它们应该是文字,而不是null

{
  "users":[{
    "id":"1",
    "name":"Sabrina Materoli",
    "department":"Marketing",
    "tel":"0207 000 1110",
    "email":"sabrina@company.com",
    "date":"2014-06-12 11:43:43",
    "role":null,
    "other":null,
    "status":"0"
  }]
}

有人能说出我做错了吗?

1 个答案:

答案 0 :(得分:1)

经过长时间的讨论,我找到了你的bug的解决方案。

只有与文本字段混合的special characters才会出现此问题。例如@$ ...

尝试使用utf8_general_ci进行数据库归类。