gpt4 book ai didi

php - 使用 MySQL 创建一个 php 变量

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:24 24 4
gpt4 key购买 nike

我有一个问题,我不知道如何解决。我尝试用一​​个 php 变量做一个简单的 if 语句。变量包含一个 MySQL SELECT 值。

$adminarray = $mysqli->query("SELECT admin FROM user WHERE name LIKE '$username'");

$currentuser = mysqli_fetch_row($adminarray);

$adm = $currentuser[0];


echo "<form action='?delete1' method='post' style='visibility:";if ($adm = 1){echo "block";}else{echo "hidden";}echo "'>

我尝试为非管理员隐藏按钮 ($adm = 0),但它不起作用。 IF 语句总是返回“真”。即使 $adm 为 0。

我知道代码不是那么好,但我仍在学习。所以如果你能给一些提示:)

谢谢回答

最佳答案

首先,使用ternary operator用于内联比较并阅读有关 comparison operators 的信息在 PHP 中

其次,不要把几个用分号隔开的字符串写在一起。 Semicolon在 PHP 中意味着指令结束,最好在新行中编写每条指令,这样会更容易阅读和维护代码

第三,总是escape data在 SQL 查询中检查变量类型,然后将其索引为数组(is_arrayisset)

最后,使用 IDE(PhpStorm、NetBeans 等)它会帮助你防止犯这样的错误

$username = $mysqli->real_escape_string($username);
$adminarray = $mysqli->query("SELECT admin FROM user WHERE name LIKE '$username'");

$currentuser = mysqli_fetch_row($adminarray);

$adm = is_array($currentuser) ? $currentuser[0] : null;
$visibility = $adm == 1 ? "block" : "hidden";

echo "<form action='?delete1' method='post' style='visibility:$visibility'>";

还值得注意的是,当您使用参数时,准备好的语句比普通 SQL 查询更可取。在那种情况下,代码看起来会略有不同:

$stmt = $mysqli->prepare("SELECT admin FROM user WHERE name LIKE ?");
$stmt->bind_param('s', $username);
$stmt->execute();
$row = $stmt->get_result()->fetch_row();
$visibility = (is_array($row) && $row[0] == 1) ? "block" : "hidden";

echo "<form action='?delete1' method='post' style='visibility:$visibility'>";

有关准备好的语句的更多详细信息,您可以在此处找到:Prepared Statements

关于php - 使用 MySQL 创建一个 php 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40933546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com