如何基于SQL查询禁用按钮?

时间:2019-04-12 15:50:17

标签: php html mysql

我需要禁用或隐藏,如果在表中存在按钮,username,并且==已登录用户

例如:John中存在用户名paym,我们应禁用按钮John

表格:paym

 ID        username        column1      column2  
+-------+-------------+-------------+-----------+
|   1   |  John       |  Value      |    Value  |
+-------+-------------+-------------+-----------+
|   2   |  Alex       |  Null       |    Null   |
+-------+-------------+-------------+-----------+

可能是语法错误或查询错误?

<?php
  $sql = "SELECT * FROM paym WHERE username = '" . $_SESSION['username'] . "'and column1 IS NOT NULL ";
  $result = mysqli_query($connection, $sql);
       if($result === true) {
        echo "<button class='btn btn-primary' disabled='disabled' name='add_box'>Add Box</button>";
    } else {
        echo "<button class='btn btn-primary' type='submit' name='add_box'>Add Box</button>";
    } 
  ?>

3 个答案:

答案 0 :(得分:3)

您应检查查询匹配的行数,因此您的条件应为

if($result !== false && $result->num_rows > 0)

因为发生错误时,$resultfalse

如果您的查询是

SELECT * FROM paym WHERE username = 'not existing user' and column1 IS NOT NULL

mysqli_query将返回mysqli_result而不是false,即使没有匹配的行。

答案 1 :(得分:1)

如评论中所述,请确保阅读您使用的函数的文档,以便您了解它们的作用,返回的作用以及如何使用它。

https://www.php.net/manual/en/mysqli.query.php非常清楚返回的内容,并解释了为什么您编写的不能起作用:该函数仅返回false或mysql_result宾语。它永远不会返回true,因此您无法对此进行测试。

当然,您可以绝对检查false,因为如果没有找到,它返回的值:

if ($result !== false) {
  // generate button
}

但请记住,$thing !== false绝不意味着$thing === true

答案 2 :(得分:0)

这里mysqli_query返回mysqli_result对象:

  

失败时返回FALSE。对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回mysqli_result对象。对于其他成功的查询,mysqli_query()将返回TRUE。 Here

相反,您可以计算行数