cakephp save返回true,数据库中没有数据

时间:2016-07-14 15:12:03

标签: cakephp

Cakephp 2.3.5我有以下记录留在我的数据库中

$record => array(
    (int) 0 => '14052V',
    (int) 1 => 'Matthew',
    (int) 2 => 'O’Gorman',
    (int) 3 => '1st Class',
    (int) 4 => ''
),

我通过调用$this->save($record, array('validate' => false));

来保存它

根据cakephp成功保存,并返回记录但缺少id。但是没有任何内容保留在数据库中,也没有记录。

如果我将记录修改为以下内容:

 $record => array(
    (int) 0 => '14052V',
    (int) 1 => 'Matthew',
    (int) 2 => 'OGorman',
    (int) 3 => '1st Class',
    (int) 4 => ''
),

然后它保存没有问题并返回数组中的id。我在'encoding' => 'utf8'文件中配置了database.php,但仍然无法保存。

造成这种情况的原因是什么?

生成的MYSQL字符串如下所示,如果您手动运行它

INSERT INTO `wsp_artworkcrm`.`artworks` (`barcode`, `artworkgroup_id`, `first_name`, `last_name`, `class`, `teacher`, `modified`, `created`, `user_created`, `user_modified`) VALUES ('*14052V-411*', 866, 'Matthew', 'O’Gorman', '1st Class', '', '2016-07-14 16:26:45', '2016-07-14 16:26:45', 2, 2)

2 个答案:

答案 0 :(得分:0)

正如@ChrisForrence所提到的,我认为这是在php中转义引号的问题。你需要在'O’Gorman'

中逃避单引号

您可以在双引号中使用单引号,例如"O'Gorman",也可以使用反斜杠'O\'Gorman'

对其进行转义

答案 1 :(得分:0)

您可以尝试使用utf8_encode()作为POST数据。