【问题标题】:Can I have a WHERE clause in an INSERT statement?我可以在 INSERT 语句中包含 WHERE 子句吗?
【发布时间】:2015-02-26 05:51:14
【问题描述】:

插入语句中是否可以有 where 子句?我找不到任何关于此的文档。我想做这样的事情:

$yesupdate2 = "INSERT INTO points(ID, 
SID,
WID,
PID) WHERE WID = :WID
VALUES(
:ID,
:SID,
:WID,
:PID)";
$stmt9 = $dbh->prepare($yesupdate2);
$stmt9->bindParam(':ID', $blurb, PDO::PARAM_INT);      
$stmt9->bindParam(':SID', $the_SID, PDO::PARAM_INT);        
$stmt9->bindParam(':WID', $yes_WID, PDO::PARAM_INT);        
$stmt9->bindParam(':PID', $contpoint, PDO::PARAM_INT);     
$stmt9->execute();

}
}

【问题讨论】:

    标签: php


    【解决方案1】:

    在插入语句中,您不会有一个现有的行来执行 where 子句吗?您正在插入一个新行,您的意思是要执行更新语句吗?

    update users set ID=$wblurb and WID=$yes_WID WHERE WID = $wid 
    

    这样的事情会有所帮助..

    【讨论】:

    • 你是对的......刚刚意识到这就是为什么它不能完成。但我不能使用更新,因为也没有要更新的记录。当有人批准该帖子时,我正在尝试在积分表中插入一行来奖励博客帖子的积分。
    • 只需添加一列并在有人批准发布后继续更新其值...默认设置为 0 或 null,当有人批准发布时更新值..
    • 你的意思是积分表中的一列叫做 score 什么的?我本来打算这样做,但是不同类型的事情有不同类型的积分,所以我需要一个独特的记录,我认为每个时间点都会授予用户,例如当有人批准他们的博客时
    • 您可以做的是根据您想要添加点的方式更改表和添加列...添加一个简单的alter table 查询...
    • true,但遗憾的是这更复杂,因为代码需要循环浏览每个帖子并知道该帖子的作者是谁,并进行比较以确保它不是当前用户。然后它必须为那一篇文章插入或更新点(而不是全部显示 10 篇)。我在下面的 URL 中有更多关于相同代码的详细信息:
    猜你喜欢
    • 2017-05-07
    • 2012-04-28
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2015-09-16
    • 1970-01-01
    • 2021-10-30
    相关资源
    最近更新 更多