TinkPHP数据库增删改查怎么操作?写的问题出在哪里

TP框架数据库修改怎么修改。写的问题在哪里?

img

//修改账户余额
    public function user_res()
    {
        $uid = Session::get('daili');
        $post = input('post.');
        $user_id = $post['user_id'];
        $yue = $post['many'];
        $quanxian = $post['many'];
        
        
        $data = [
            'money'=>$post['money']
        ];
        $sql = daili::where('id',$uid)->update($data);
        if($sql){
            return json(jsoncode(1,'修改成功'));
        }else{
            return json(jsoncode(-1,'修改失败'));
        }
    }

img

//监听提交-修改账户余额
        form.on('submit(user_res)', function(data){
          
          //发异步,把数据提交给php
          var form = $("#user_res").serialize();
          $.ajax({
              url:'{:url("daili/index/index")}',
              type:'post',
              data:form,
              dataType:'json',
              success:function(data){
                  
                  if(data.code == 1){
                      layer.alert(data.msg, {icon: 6},function () {
                          //刷新当前页面
                        location.reload();
                      });
                      return false;
                  }else{
                      layer.msg(data.msg,{icon:5,time:2000});
                  }
              }
          });
          return false;
        });    

img


<form class="layui-form" id="user_res">
                  
                  <div class="layui-form-item">
                    <div class="layui-col-md12">
                      <label class="layui-form-label">账户余额:label>
                      <div class="layui-input-block">
                          
                        <input type="text" name="money" lay-verify="required" placeholder="{$daili.money}" autocomplete="off" class="layui-input">
                       
                      div>
                    div>
                  div>
                                    
                  <div class="layui-form-item">
                    <div class="layui-input-block">
                        <style>
                            .ml_bn{
                                display: inline-block;
    height: 38px;
    line-height: 38px;
    vertical-align: top;
    padding: 0 15px;
    background-color: #E91E63;
    color: #fff;
    white-space: nowrap;
    text-align: center;
    font-size: 14px;
    border: none;
    border-radius: 2px;
    cursor: pointer;
                            }
                        style>
                      <button class="ml_bn" lay-submit="" lay-filter="user_res">修改button>
                    div>
                  div>
                form>
这段代码中的问题在于$quanxian = $post['many'];这行代码没有被使用,它会影响代码的逻辑。另外,在$post数组中,没有user_id这个键,所以 $user_id = $post['user_id'];这行代码也不需要。

下面是修改后的代码:
public function user_res()
{
    $uid = Session::get('daili');
    $post = input('post.');
    $data = [
        'money' => $post['money']
    ];
    $sql = daili::where('id', $uid)->update($data);
    if ($sql) {
        return json(jsoncode(1, '修改成功'));
    } else {
        return json(jsoncode(-1, '修改失败'));
    }
}
此外,这段代码使用了Layui框架的form.on()和layer.alert()等函数,这些函数需要Layui的JavaScript库和CSS文件支持才能正常工作,因此需要在前端页面中引入相应的资源。

引用GPT:这段代码存在几个问题:

1 $quanxian = $post['many']; 这行代码没有用到,应该删除。

2 $data = ['money'=>$post['money']]; 这行代码只更新了 money 字段,但是没有更新 quanxian 字段,这可能是不正确的。如果需要更新 quanxian 字段,应该修改 $data 数组。

3 if($sql){ 这行代码只检查了 SQL 语句是否执行成功,但是没有检查是否更新了一行记录。如果没有更新记录,则代码也会返回成功的消息,这可能是不正确的。应该检查 $sql 的返回值来确保是否更新了记录。

4 url:'{:url("daili/index/index")}', 这行代码应该指向正确的后端处理程序的 URL,否则 AJAX 请求会失败。

5 这行代码的 placeholder 属性应该设置为显示当前用户的账户余额,而不是模板变量。

根据上述问题,修改后的代码如下所示:

// 修改账户余额和权限
public function user_res()
{
    $uid = Session::get('daili');
    $post = input('post.');
    $user_id = $post['user_id'];
    $yue = $post['many'];

    $data = [
        'money' => $post['money'],
        'quanxian' => $post['quanxian']
    ];

    $sql = daili::where('id', $user_id)->where('daili_id', $uid)->update($data);
    if ($sql === false) {
        return json(jsoncode(-1, '修改失败'));
    }

    return json(jsoncode(1, '修改成功'));
}
<form class="layui-form" id="user_res">
    <div class="layui-form-item">
        <div class="layui-col-md12">
            <label class="layui-form-label">账户余额:</label>
            <div class="layui-input-block">
                <input type="text" name="money" lay-verify="required" placeholder="{: $daili.money }" autocomplete="off" class="layui-input">
            </div>
        </div>
    </div>

    <div class="layui-form-item">
        <div class="layui-col-md12">
            <label class="layui-form-label">权限:</label>
            <div class="layui-input-block">
                <input type="text" name="quanxian" lay-verify="required" placeholder="{: $daili.quanxian }" autocomplete="off" class="layui-input">
            </div>
        </div>
    </div>

    <div class="layui-form-item">
        <div class="layui-input-block">
            <button class="layui-btn" lay-submit="" lay-filter="user_res">修改</button>
        </div>
    </div>
</form>



你的代码中,监听提交$.ajax方法中,post提交的数据是没有user_id的值的,但是你在修改账户余额的方法user_res中又去从post中获取user_id的值。有可能会有问题。你可以在user_res方法中把各个值输出打印下,看下是否正确。

我简单介绍一下常用的方法:

查询操作:
(1)查询全部数据:

//查询全部数据
$data = Db::name('table_name')->select();


(2)查询一条数据:

//查询一条数据
$data = Db::name('table_name')->where('id',$id)->find();


(3)查询指定字段的数据:

//查询指定字段的数据
$data = Db::name('table_name')->field('id,name,age')->select();


(4)带条件的查询:

//带条件的查询
$data = Db::name('table_name')->where('name',$name)->where('age',$age)->select();


(5)使用原生 SQL 查询:

//使用原生 SQL 查询
$data = Db::query('SELECT * FROM table_name WHERE id=?',[$id]);


2.插入操作:

//插入数据
$data = ['name' => $name, 'age' => $age, 'sex' => $sex];
$res = Db::name('table_name')->insert($data);


3.更新操作:

//更新数据
$data = ['name' => $new_name, 'age' => $new_age, 'sex' => $new_sex];
$res = Db::name('table_name')->where('id',$id)->update($data);


4.删除操作:

//删除数据
$res = Db::name('table_name')->where('id',$id)->delete();


有完整代码?

基于最新版ChatGPT4的回答,望采纳!!!有其他问题也可以询问我哦、”(最新版更智能,功能更加强大)

给定的代码不正确,因为它无法处理数组中的元素减去质数后是否能形成递增序列的问题。为了解决这个问题,我们需要重新编写算法。这里是一个修改后的版本:

你的代码中有一些小问题,我将针对这些问题进行说明,并提供修改建议。

  1. public function user_res()函数中,你使用了$yue$quanxian这两个变量,但是并没有在后续的代码中使用它们。如果你不需要这两个变量,可以将它们删除。
  2. 你的$.ajax调用中的URL是{:url("daili/index/index")},但是你的PHP函数名是user_res。你需要确保这个URL正确指向你的user_res方法。所以,请将URL更改为:{:url("daili/index/user_res")}
  3. public function user_res()函数中,你需要获取表单中的所有数据。input('post.')可能无法正确获取这些数据。你应该使用$this->request->param()来替换input('post.'),这样你就可以获取到所有的POST数据。例如:
$post = $this->request->param();
  1. 最后,将<form>元素添加action属性,指向user_res方法。例如:
<form class="layui-form" id="user_res" action="{:url('daili/index/user_res')}">

根据上述修改建议,你的代码应该可以正常工作。如果仍然存在问题,请随时向我提问,我会尽力帮助你。