繁体   English   中英

在if / else中,在update的where子句中使用select语句的值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM