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

我一直在寻找以下代码的修复程序。我在 stackoverflow 中搜索了许多类似的帖子,但没有解决。


我试图建立的是,我想检查一个查询,如果行存在,我需要使用 UPDATE 语句 else INSERT 语句。我已经多次建立了这一点,但没有准备好的声明。现在我正在用准备好的语句修改我以前的许多代码。下面是我的代码。


<?php


include'../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。我想要的是如果行存在则更新,否则则插入。任何帮助表示赞赏。


函数式编程
浏览 122回答 1
1回答

HUWWW

我正在发布对我有用的解决方案,以防万一有人需要即时参考。在更改我的原始 PHP 代码之前对 MySql 列所做的一些编辑是我将我的列更改为 UNIQUE。<?phpinclude'../db.php';$exercise_days=$_POST['exercise_days'];$id=$_POST['id'];if ($exercise_days!='' && is_numeric($exercise_days))&nbsp;&nbsp;{&nbsp; &nbsp; &nbsp; &nbsp; $query=$db->prepare("INSERT INTO exercisetable (`id`, `exercise_days`) VALUES (?,?) ON DUPLICATE KEY UPDATE exercise_days =?");&nbsp; &nbsp; &nbsp; &nbsp; $query->bind_param('sss', $id, $exercise_days, $exercise_days);&nbsp; &nbsp; &nbsp; &nbsp; $query->execute();&nbsp; &nbsp; &nbsp; &nbsp; if($query){&nbsp; &nbsp; &nbsp; &nbsp; $message='Exercise Days Inserted';&nbsp; &nbsp; &nbsp; &nbsp; $success='Success';&nbsp; &nbsp; &nbsp; &nbsp; echo json_encode(array('message'=>$message,'success'=>$success));&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; $query->close();}else{&nbsp; &nbsp; $message='Excercise Days Can Only Be Numbers';&nbsp; &nbsp; $success='Error';&nbsp; &nbsp; echo json_encode(array('message'=>$message,'success'=>$success));}&nbsp;&nbsp;?>
打开App,查看更多内容
随时随地看视频慕课网APP