[英]using value of select statement in where clause of update, within if/else
我将这个脚本重构为首先使用select语句来查看某个表中是否存在记录。
现在,如果什么都不存在,我只是在插入。 但是我的误解是现在有了更新。 我已经有$content
作为变量。
但是,如何从我的选择中获取existingContent
,并在更新的where子句中使用它(如果在选择中找到了现有记录,则会调用该子句):
$content = $_POST['page_content'];
$panelID = $_POST['panel_type'];
$pageID = $_POST['page_id'];
$checkIfExists = "SELECT COUNT(*) AS count, cont_id as existingContent FROM
panels WHERE panel_type_id = $panelID AND page_id = $pageID";
if($mysqlConn->query($checkIfExists)->count = 0){
//working insert
else{
$updateContent = "
UPDATE content
SET content = '$content'
WHERE id = /*this would be existingContent from my select above*/
}
完整的更新代码:
$content = $_POST['page_content'];
$panelID = $_POST['panel_type'];
$pageID = $_POST['page_id'];
$checkIfExists = "SELECT COUNT(*) AS count, cont_id as existingContent FROM panels WHERE panel_type_id = $panelID AND page_id = $pageID";
$existingContent = $mysqlConn->query($checkIfExists);
if($existingContent->count == 0){
$addContent = "
INSERT INTO content(content)
VALUES('$content');
";
if ($mysqlConn->query($addContent) === TRUE) {
$cont_id = $mysqlConn->insert_id;
$data['last_insert_id'] = $cont_id;
echo json_encode($data);
} else {
echo "Error: " . $addContent . "<br>" . $mysqlConn->error;
}
$addPanel = "
INSERT INTO panels(panel_type_id, page_id, cont_id)
VALUES ('$panelID', '$pageID', '$cont_id');
";
if ($mysqlConn->query($addPanel) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $addPanel . "<br>" . $mysqlConn->error;
}
else{
$updateContent = "
UPDATE content
SET content = '$content'
WHERE id = $existingContent->existingContent;
";
}
$content = $_POST['page_content'];
$panelID = $_POST['panel_type'];
$pageID = $_POST['page_id'];
$checkIfExists = "SELECT COUNT(*) AS count, cont_id as existingContent FROM
panels WHERE panel_type_id = $panelID AND page_id = $pageID";
$existingContent = $mysqlConn->query($checkIfExists);
// You had an error in your IF statement you have used (=) instead of (==)
if($existingContent->count == 0){
//working insert
else{
$updateContent = "
UPDATE content
SET content = '$content'
WHERE id = $existingContent->existingContent
}
建议您的代码(如果非常不安全),则应在查询中使用值绑定。
这应该可以帮助您入门,但是,请务必调查价值约束。
祝你好运
$checkIfExists = "SELECT COUNT(*) AS count, cont_id as existingContent FROM
panels WHERE panel_type_id = $panelID AND page_id = $pageID";
$stmt = $mysqlConn->prepare($checkIfExists);
$stmt->execute();
$row = $stmt->fetch();
if($row['count'] == 0){
//working insert
else{
$updateContent = "
UPDATE content
SET content = '$content'
WHERE id = {($row['cont_id']}
}
也许试试这个?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.