首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在MySQL中使用UPDATE语句的问题

在MySQL中使用UPDATE语句的问题
EN

Stack Overflow用户
提问于 2018-07-25 07:31:46
回答 1查看 44关注 0票数 2

我正在尝试使用PHP和MySQL更新一个专栏。

基本上,我有一个成人数据库和一个儿童数据库。当添加我的孩子时,我想将孩子的ID添加到他们各自的成年人。

当我的孩子被添加时,我获取插入的ID (我已经有了成人的ID )。

如果成人没有孩子,我只需添加孩子的ID (第一次运行时总是这样)。我的问题是,当我为同一个成年人添加第二个孩子时。成人的"Kids“列不会更新。我用#拆分孩子的ID。

它在第一次工作得很好,但不能每隔一次更新一次表。

我的代码是:

$sqlstatment = "INSERT INTO attendees (first, last, dob, access) VALUES ('$first','$last','$dob','$parent')";
$result = $link->query( $sqlstatment );

if ( $result ) {
            $kid_id = $link->insert_id;
            if ( $profile[ 'kids' ] === "" ) {
                $kids = $kid_id;
            } else {
                $kids = $profile[ 'kids' ]. "#" . $kid_id;
            }

            $updatesql = "UPDATE access SET kids = $kids WHERE id = $parent";
            $updaccess = $link->query( $updatesql );
            if ( $updaccess ) { 
                outputToConsole("Adult update success");
            } else {
                outputToConsole("Adult update failed");
            }
}

表格格式

EN

回答 1

Stack Overflow用户

发布于 2018-07-25 08:17:20

我个人处理这类问题的方法是完整地利用现有的类,而不是混合不同的方法。这将确保问题(如前面提到的SQL注入)和错误,类方法结果被干净地处理,从而产生更具容错能力的代码和更平滑的调试过程等。

$query = "INSERT INTO attendees (first, last, dob, access) VALUES (:first,:last,:dob,:parent)";
try {
    $statement = $link->prepare($query);
    $statement->bindValue(":first",$first,PDO::PARAM_STR);
    $statement->bindValue(":last",$last,PDO::PARAM_STR);
    $statement->bindValue(":dob",$dob,PDO::PARAM_STR);
    $statement->bindValue(":parent",$parent,PDO::PARAM_STR);
    if ($statement->execute()) {
        $kid_id = $statement->insert_id();
        $kids = ($profile[ 'kids' ] === "")?  $kid_id : $profile['kids']."#".$kid_id; 
        $updatequery = "UPDATE access SET kids = :kids WHERE id = :parent";
        try { 
            $updatestatement = $link->prepare($updatequery);
            $updatestatement->bindValue(":kids",$kids,PDO::PARAM_STR);
            $updatestatement->bindValue(":parent",$parent,PDO::PARAM_STR);
            if ($updatestatement->execute())
                outputToConsole("Adult update success");
        } catch (PDOException $e) {
            outputToConsole("Adult update failed");
        }
    };
} catch (PDOException $e) {
    outputToConsole($e->getMessage());
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51508946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档