为了账号安全,请及时绑定邮箱和手机立即绑定

PHP 准备语句插入或更新如果行存在

PHP 准备语句插入或更新如果行存在

PHP
函数式编程 2021-11-13 19:06:53
我一直在寻找以下代码的修复程序。我在 stackoverflow 中搜索了许多类似的帖子,但没有解决。我试图建立的是,我想检查一个查询,如果行存在,我需要使用 UPDATE 语句 else INSERT 语句。我已经多次建立了这一点,但没有准备好的声明。现在我正在用准备好的语句修改我以前的许多代码。下面是我的代码。<?phpinclude'../db.php';$exercise_days=$_POST['edays'];$id=$_POST['id'];if ($exercise_days!='' && is_numeric($exercise_days)) {    $query=$db->prepare("SELECT * from exercisetable where id=?");    $query->bind_param('s', $id);    /* execute query */    $query->execute();    /* store result */    $query->store_result();    $query->bind_result($rowcheck);    $query->fetch();    if ($rowcheck)    {        $e_update=$db1->prepare("UPDATE exercisetable SET exercise_days=? WHERE id=?");        $e_update->bind_param('ss', $exercise_days, $id);        $e_update->execute();        if($e_update){        $message='Exercise Days Updated';        $success='Success';        echo json_encode(array('message'=>$message,'success'=>$success));        }        $e_update->close();    } else {        $e_insert=$db1->prepare("INSERT INTO exercisetable (`id`, `exercise_days`) VALUES (?,?)");        $e_insert->bind_param('ss', $id, $exercise_days);        $e_insert->execute();        if($e_insert){        $message='Exercise Days Inserted';        $success='Success';        echo json_encode(array('message'=>$message,'success'=>$success));        }        $e_insert->close();    }}else  {    $message='Exercise Days Can Only Be Numbers';    $success='Error';    echo json_encode(array('message'=>$message,'success'=>$success));}  ?>执行上面的代码总是进入 else 语句,即使行存在,它也会进入 INSERT。我想要的是如果行存在则更新,否则则插入。任何帮助表示赞赏。
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

我正在发布对我有用的解决方案,以防万一有人需要即时参考。


在更改我的原始 PHP 代码之前对 MySql 列所做的一些编辑是我将我的列更改为 UNIQUE。


<?php


include'../db.php';


$exercise_days=$_POST['exercise_days'];

$id=$_POST['id'];


if ($exercise_days!='' && is_numeric($exercise_days))  

{

        $query=$db->prepare("INSERT INTO exercisetable (`id`, `exercise_days`) VALUES (?,?) ON DUPLICATE KEY UPDATE exercise_days =?");

        $query->bind_param('sss', $id, $exercise_days, $exercise_days);

        $query->execute();

        if($query){

        $message='Exercise Days Inserted';

        $success='Success';

        echo json_encode(array('message'=>$message,'success'=>$success));

        }

        $query->close();

}


else

{

    $message='Excercise Days Can Only Be Numbers';

    $success='Error';

    echo json_encode(array('message'=>$message,'success'=>$success));

 ?>


查看完整回答
反对 回复 2021-11-13
  • 1 回答
  • 0 关注
  • 121 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信