当前位置: 首页 > 知识库问答 >
问题:

数组到字符串转换的原则simple_array字段

鲜于雨石
2023-03-14

我想将数据从JSON文件导入数据库表。我将条令与pdo_sqlite驱动程序一起使用,并配置了以下实体:

/**
 * @Entity @Table(name="mytable")
 **/
class MyClass
{
    /** @Id @Column(type="integer") @GeneratedValue *
     * @Column(type="integer")
     */
    var $id;

    /** @Column(type="string") **/
    var $name;


    /** @Column(type="simple_array") **/
    var $parameters;

    function __construct($name, $parameters)
    {
        $this->name = $name;
        $this->parameters = $parameters;
    }

    // getters and setters here
}

我创建了一个简单的导入方法:

function importFromJson($tableName, $fileName)
    {
        if (file_exists($fileName)) {
            $data = json_decode(file_get_contents($fileName));
            if (is_array($data)) {
                $connection = getEm()->getConnection();
                foreach($data as $tuple) {
                    if (is_object($tuple)) {
                        $connection->insert($tableName, (array)$tuple);
                    }
                }
            }
        }
    }

我的进口。json文件包含以下文本:

[
  {
    "name": "A name",
    "parameters": ["a","b","c"]
  }
]

调用导入方法时:

importFromJson("mytable", "import.json");

我得到以下错误:

执行INSERT INTO mytable(name,参数)VALUES时发生异常 (?, ?)'用参数["A name",["a","b","c"]]:

数组到字符串转换C:\myproject\供应商\原则\dbal\lib\原则\DBAL\DBALException.php:119C:\myproject\供应商\原则\dbal\lib\原则\DBAL\Connection.php:996C:\myproject\供应商\原则\dbal\lib\原则\DBAL\Connection.php:696C:\myproject\lib\import.php:39

simple_array类型的确切目的不是将数组转换为可以存储在数据库中的字符串吗?

共有1个答案

郭翰翮
2023-03-14

我不知道为什么你必须像在数据库中存储数组一样存储参数,但是一个简单的方法是先存储它,你应该把参数转换成一个有效的字符串,否则它就不能正确存储。

foreach($data as $tuple) {
    if (is_object($tuple)) {
        $touple = implode(",", (array)$touple);
        $connection->insert($tableName, (array)$tuple);
    }
}

另一个选项是将其转换为json字符串

foreach($data as $tuple) {
    if (is_object($tuple)) {
        $touple = json_encode($touple);
        $connection->insert($tableName, (array)$tuple);
    }
}

为了能够在使用选择时使用数据,您应该再次使用爆炸()json_encode将数据转换回数组。希望这个炒锅!:)

 类似资料:
  • 我正在制作一个Android应用程序,它可以与蓝牙设备进行通信。我正在为选定的特征写一条特定的信息,如下所示: 我的转换函数如下所示: 我试图弄清楚为什么在这种情况下,我的转换输出是这样的: D/上传数据集:消息:�������������������� 这很奇怪,因为当我使用相同的转换函数来转换作为蓝牙通知接收到的值时,它工作得非常好。欢迎提出问题所在的任何建议

  • 问题内容: 我正在尝试从数据库中选择一个值,然后使用SELECT将其显示给用户。但是我不断收到此错误: 我以为可以解决此问题,但我仍然得到通知。这是我收到错误的代码部分: 我究竟做错了什么?我对PHP很陌生。 问题答案: 问题在于$ money是一个数组,您将其视为字符串或可以轻松转换为字符串的变量。您应该这样说:

  • 我正在使用Schembuf在带有套接字的计算机之间更改数据。要传输数据,我使用以下内容: 然而,我注意到Protobuf无法读取任何非int类型的接收数据(它将其分配给0)。果不其然,如果我不使用套接字,但试图用相同的代码片段返回消息,则会发生相同的情况: 我还指出: 那么,为什么我不能正确地将数据转换回字符串呢?如果这是一个参考问题,为什么protobuf不能读取字符数组数据或从字符数组转换的字

  • 问题内容: 是否可以将字符串转换为字节数组,然后在Java或Android中将其转换回原始字符串? 我的目标是将一些字符串发送到微控制器(Arduino)并将其存储到EEPROM(仅1 KB)中。我尝试使用MD5哈希,但它似乎只是一种单向加密。我该怎么办? 问题答案: 我建议使用字符串的成员,但 使用显式编码 : 通过使用一种显式编码(以及一种支持所有Unicode的编码),您可以避免仅调用等问题

  • 我想转换一个组织。阿帕奇。火花sql。数据框到组织。阿帕奇。火花rdd。RDD[(字符串,字符串)]在数据块中。有人能帮忙吗? 背景(也欢迎使用更好的解决方案):我有一个Kafka流,它(经过一些步骤)变成了2列数据帧。我想将其放入Redis缓存,第一列作为键,第二列作为值。 更具体地说,输入的类型是:。我尝试将以下内容放入Redis: 错误消息如下所示: 我已经尝试过一些想法(比如函数、rdd)

  • Golang具有strconv库,可以将字符串转换为int64和uint64。 但是,其余的整数数据类型似乎不受支持,因为我找不到byte、int16、uint16、int32、uint32数据类型的转换函数。 始终可以将字节、16位和32位数据类型转换为int64和uint64,而不会损失精度。这就是语言的意图吗?