用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2223|回复: 17
收起左侧

[版本 3.x] 求助,新手在使用ci操作数据库时使用数据库中的函件语法

[复制链接]
发表于 2016-1-4 16:39:25 | 显示全部楼层 |阅读模式
第一次接触ci,版本是3.x,在使用ci操作数据时语法求助
insert 时,我需要使用到uuid,不知道如何将upper(replace(uuid(),'-','')),写到代码中
$data = array(
                'user_id' => replace(uuid(),'-',''),   //此处不知如何写,请指教
        'user_name' => $this->input->post('email')
);

    return $this->db->insert('user', $data);
 楼主| 发表于 2016-1-4 17:24:10 | 显示全部楼层
Closer 发表于 2016-1-4 17:19
Message: Call to undefined function replace()
是告訴你他呼叫不到這個方法名
因為你這樣用 replace(uuid ...

我现在想使用uuid做为唯一编码,uuid是mysql 自带的,和ci没关系
因此,我想在ci语句中直接转换到sql 语句中,直接使用查询到uuid的函数,其中是替换掉'-'的字符

为啥我使用以下语句:
$query = $this->db->query('select uuid()');
        $row = $query->row();
返回结果为空,语句我可以直接在数据库中执行。
 楼主| 发表于 2016-1-4 17:57:36 | 显示全部楼层
Closer 发表于 2016-1-4 17:42
這就是兩回事了
我說沒有選擇哪個是指你呼叫 $row = $query->row(); 之後
應該是直接 echo $row; 吧
PHP复制代码
$row = $query->row();        $uuid = $row->uuid;
复制代码



PHP复制代码
$row = $query->row_array();        $uuid = $row['uuid'];
复制代码

都可以
发表于 2016-1-4 17:33:00 | 显示全部楼层
本帖最后由 Closer 于 2016-1-4 17:34 编辑


因為你輸出的是物件
呼叫他的時候要選擇你要哪個
PHP复制代码
 
$query = $this->db->query('select uuid() as id');
$row = $query->row_array(); // 若是物件則 $query->row()
 
echo '<pre>';
print_r($row['id']); // 若是物件則 $row->id
echo '</pre>';
复制代码

发表于 2016-1-4 16:59:42 | 显示全部楼层
無關 CI,此為 PHP 函數問題
 楼主| 发表于 2016-1-4 17:08:46 | 显示全部楼层
是不是需要使用$this->load->helper(“XX")之类的》?
 楼主| 发表于 2016-1-4 17:09:48 | 显示全部楼层
会提示Message: Call to undefined function replace(),是不是需要加载什么?
发表于 2016-1-4 17:10:39 | 显示全部楼层
developerm 发表于 2016-1-4 17:08
是不是需要使用$this->load->helper(“XX")之类的》?

也許你該先查詢
PHP 是否有 replace() 與 uuid() 函數
它們的功能是甚麼
 楼主| 发表于 2016-1-4 17:13:31 | 显示全部楼层
Closer 发表于 2016-1-4 17:10
也許你該先查詢
PHP 是否有 replace() 與 uuid() 函數
它們的功能是甚麼

是mysql 中的内置函数,是的,我现在尝试先执行select replace(uuid(),"-","");语句;
发表于 2016-1-4 17:17:21 | 显示全部楼层
developerm 发表于 2016-1-4 17:13
是mysql 中的内置函数,是的,我现在尝试先执行select replace(uuid(),"-","");语句; ...

抱歉,我學識淺薄,還真的沒在 mysql 用過這兩個函數
問題也許是你混用了
发表于 2016-1-4 17:19:21 | 显示全部楼层
Message: Call to undefined function replace()
是告訴你他呼叫不到這個方法名
因為你這樣用 replace(uuid(),'-','')
請先這樣看他 replace()
這樣子是不是像是在呼叫某函數或是方法 ?
发表于 2016-1-4 17:23:27 | 显示全部楼层
你的需求比較特殊
應該要自行編寫 SQL 語法
使用 $query = $this->db->query('YOUR QUERY HERE');
參考 : CI 手冊 - 查詢

本版积分规则