我正在尝试使用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");
}
}
表格格式
发布于 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());
}
https://stackoverflow.com/questions/51508946
复制相似问题