Table->set
最后更新于:2022-04-02 06:31:53
# Table->set
[TOC]
设置行的数据,`Table`使用`key-value`的方式来访问数据。
~~~
Table->set(string $key, array $value) : void
~~~
## 参数
* `$key`,数据的`key`,相同的`$key`对应同一行数据,如果`set`同一个`key`,会覆盖上一次的数据
* `$value`,必须是一个数组,必须与字段定义的`$name`完全相同
> `swoole_table->set()`可以设置全部字段的值,也可以只修改部分字段
> `swoole_table->set()`未设置前,该行数据的所有字段均为空
> `set/get/del`是自带行锁,所以不需要调用lock加锁
> **Key非二进制安全,必须为字符串类型,不得传入二进制数据**
## 返回值
此函数没有返回值。
## 使用示例
~~~
$table->set('1', ['id' => 1, 'name' => 'test1', 'age' => 20]);
$table->set('2', ['id' => 2, 'name' => 'test2', 'age' => 21]);
$table->set('3', ['id' => 3, 'name' => 'test3', 'age' => 19]);
~~~
## 设置超过最大长度字符串
如果传入字符串长度超过了列定义时设定的最大尺寸,底层会自动截断。
示例:
~~~
$table->column('str_value', swoole_table::TYPE_STRING, 5);
$table->set('hello', array('str_value' => 'world 123456789'));
~~~
* `str_value`列最大尺寸为`5`字节,但`set`设置了超过5字节的字符串
* 底层会自动截取`5`字节的数据,最终`str_value`的值为`world`
';