我有一段代码,当用户1批准帖子时,它会在积分表中插入一行。我编写了代码,这样只有当用户不是帖子的作者时,它才会批准帖子。任何时候最多可以有10个职位可供选择以供批准。
然而,虽然这只会在当前用户不是帖子作者的情况下批准帖子(并以点数插入记录),但它不会只插入已批准帖子的记录。相反,它会在积分表中插入和用户帖子一样多的行。
我想做的是为当前用户批准的帖子插入点,其中帖子作者不是当前用户。
我非常接近。此代码有效,只是如果存在其他用户的多个帖子,而不是当前用户选择批准的一个帖子,它将插入所有记录。
$results2 = $dbh->prepare("select
wp_users.ID,
wp_users.display_name,
stories.ID AS ID1,
stories.SID,
writing.ID AS ID2,
writing.WID,
writing.text
FROM writing
LEFT JOIN stories on writing.SID = stories.SID
LEFT JOIN wp_users ON writing.ID = wp_users.ID
WHERE (stories.SID = $the_SID)
order by writing.WID asc limit 10
");
$results2->bindParam(':wp_users.ID', $user_ID, PDO::PARAM_INT);
$results2->bindParam(':display_name', $display_name, PDO::PARAM_STR);
$results2->bindParam(':stories.ID', $ID1, PDO::PARAM_INT);
$results2->bindParam(':stories.SID', $the_SID, PDO::PARAM_STR);
$results2->bindParam(':writing.WID', $WID, PDO::PARAM_STR);
$results2->bindParam(':writing.ID', $ID2, PDO::PARAM_INT);
$results2->bindParam(':text', $text, PDO::PARAM_STR);
$results2->execute();
$row2 = $results2->fetchAll(PDO::FETCH_ASSOC);
foreach ($row2 as $result5) {
$blurb = $result5['ID2'];
settype($blurb, "integer");
}
//PA APPROVE INSERT CONTROL
if(isset($_POST ['yes'])){
// Get values from form
$yes_WID = $_POST['yes'];
$yesupdate = "UPDATE writing SET approved = :approved, position = :position
WHERE WID = :WID";
$stmt2 = $dbh->prepare($yesupdate);
$stmt2->bindParam(':WID', $yes_WID, PDO::PARAM_INT);
$stmt2->bindParam(':approved', $e = Y, PDO::PARAM_STR);
$stmt2->bindParam(':position', $row2[0]['position'], PDO::PARAM_INT);
$stmt2->execute();
$yes_WID = $_POST['yes'];
//trying to give points as long as user is not the author
$contpoint = 3;
foreach($row2 as $result5){
if($blurb !== $user_ID){
$yesupdate2 = "INSERT INTO points(ID,
SID,
WID,
PID) 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();
}
}
您的if条件似乎没有得到正确评估。$blurb和$user_ID是同一类型吗?
发件人http://php.net/manual/en/language.operators.comparison.php
$a!=$b如果类型杂耍后$a不等于$b,则不等于TRUE。
$a==$b如果$a不等于$b,或者它们不是相同类型。
此代码的用途是什么?它只是为每个值设置$blurb,然后不处理结果,除非代码列表之间的大括号没有正确显示。那么它是前臂内侧的前臂吗?
在任何情况下,似乎都不会像对$blurb那样将$user_ID设置为整数。
foreach ($row2 as $result5) {
$blurb = $result5['ID2'];
settype($blurb, "integer");
}
取消第一个foreach循环,并将其与第二个循环组合,如下所示:
foreach($row2 as $result5){
$blurb = $result5['ID2'];
$userID = $result5['user_ID'];
settype($blurb, "integer");
settype($userID, "integer");
if($blurb !== $userID){
...etc