使用php在oracle数据库中没有更新数据

i am using oracle with php. I have inserted data and now wants to update the column of availability of user. I am using the code given below but I am unable to update data. Data remains the same. Please help me.

    <?php
    if(isset($_POST['available']))
    {
        var_dump($_POST);
       print_r($_POST);
        echo("in available");
        session_start();
        $user = $_SESSION["username"];
        include('connect.php');
        $sql = oci_parse($conn,"select * from userM where user_name = '$user'");
       $result =  oci_execute($sql);

       while(($row = oci_fetch_array($sql,OCI_BOTH)) != false )
      {
         $p_No = $row[0];
         $full_Name = $row[1];
         $user_name = $row[2];
         $email = $row[3];
         $department = $row[4];
          $desig = $row[5];
        }
        $avail = 1;
        $sql1 = "update userM where user_name = '$user'"."set (:p_No, :full_Name, :user_name, :email, :department, :designation, :avail)";
           $compiled = oci_parse($conn,$sql1);
          oci_bind_by_name($compiled, ':p_No', $p_No);
          oci_bind_by_name($compiled, ':full_Name', $full_Name);
          oci_bind_by_name($compiled, ':user_name', $user_name);
          oci_bind_by_name($compiled, ':email', $email);
          oci_bind_by_name($compiled, ':department', $department);
          oci_bind_by_name($compiled, ':designation', $desig);
          oci_bind_by_name($compiled, ':avail', $avail);
          oci_execute($compiled);
          oci_close($conn);
         header("location:register.php?msg=avail");
    }
   ?>
dozabt4329
dozabt4329 如果您只想提交单个oci_execute(),请使用commitflag选项而不是显式提交。有关详细信息,请查看PHP手册。
大约 3 年之前 回复
duanmao1932
duanmao1932 我纠正了它,它完美地工作,谢谢你
大约 3 年之前 回复
dqqlziv195281
dqqlziv195281 最后一件事-在上面评论的示例代码中,您在oci_commit之前调用标头。我不熟悉php引擎,但这听起来不对-提交应该在重定向之前发生(特别是因为你想要处理在提交期间引起的任何错误)。
大约 3 年之前 回复
drkj41932
drkj41932 我在你的上一条评论中看到你说oci_bind_by_name($stmt,“:user_name”,$user),但你的sql文本中的参数名实际上是:user。我也很难相信没有错误,因为你应该在执行时收到“ORA-01008:并非所有变量绑定”而没有绑定所有变量。你是否在oci_execute之后立即调用了oci_error?
大约 3 年之前 回复
doulao3078
doulao3078 而且也没有错误
大约 3 年之前 回复
dongyidao1461
dongyidao1461 我也这样做但仍然没有用$usql=“updateuserMsetavail=:availwhereuser_name=:user”;$stmt=oci_parse($conn,$usql);oci_bind_by_name($stmt,“:user_name”,$user);oci_bind_by_name($stmt,“:avail”,$avail);oci_execute($stmt);第标题(“位置:register.php味精=无济于事?”);oci_commit($康恩);
大约 3 年之前 回复
douxianji3367
douxianji3367 你检查了oci_execute返回的内容吗?此外,您可以使用oci_error查看出错的地方。对不起,我没有阅读你的其余SQL文本。您正在使用更新和插入语法的组合。它应该像更新userMsetp_no=:p_no...其中user_name=:user。docs.oracle.com/javadb/10.6.2.1/ref/rrefsqlj26498.html
大约 3 年之前 回复
dsij89625
dsij89625 我重新安排了更新声明但仍无法正常工作
大约 3 年之前 回复
dotif64826
dotif64826 您的SQL无效-您正在编写“update...where...set”,当语法实际上是“update...set...where”时。你真的需要检查你的oci_execute调用的响应。此外,您正在使用绑定更新参数,但直接将$user替换为命令文本,您应该将其整理好。
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐