如果ELSE如果错误,则第一个条件仅起作用

时间:2017-11-17 23:08:36

标签: php if-statement mysqli

我正在尝试使用链接更改一个列值,如果列值已发布,则将更改为未发布,反之亦然。但问题是只有在条件不起作用的情况下才会发生。

这是链接:

echo "<td><a href='testi.php?change_status={$testi_id}&status={$testi_status}'>Publish / Unpublish</a></td>";

改变状态的PHP代码:

<?php 
if(isset($_GET['change_status'])){
    $the_status =  escape($_GET['status']);
    $the_testi_id = escape($_GET['change_status']);


    if  ($the_status='published'){
    $query = "UPDATE testimonial SET testi_status = 'unpublished' WHERE testi_id = $the_testi_id   ";
    $change_to_sub_query = mysqli_query($connection, $query); }

   else if ($the_status='unpublished'){
        $query = "UPDATE testimonial SET testi_status = 'published' WHERE testi_id = $the_testi_id   ";
        $change_to_sub_query = mysqli_query($connection, $query); 

    }

    header("Location: testi.php");



}  ?>

1 个答案:

答案 0 :(得分:2)

=套,双==次检查,三===次检查。

当你这样做时

if ($value='foo') {}

它正在做的是检查$value是否设置为'foo',并始终评估为true

所以你想改为if ($value == 'foo')

在您撰写的内容中,它永远不会评估elseif,因为if将始终为真。

供参考,=====

之间的差异
//evalates to true
if (1 == true) { ... }

//evaluates to false
if (1 === true) { ... }

//evaluates to true
if (1 === 1) { ... }

//evaluates to true
if (true === true) { ... }