我需要禁用或隐藏,如果在表中存在按钮,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>";
}
?>
答案 0 :(得分:3)
您应检查查询匹配的行数,因此您的条件应为
if($result !== false && $result->num_rows > 0)
因为发生错误时,$result
仅false
。
如果您的查询是
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
相反,您可以计算行数