【问题标题】:My IF Functions aren't working [duplicate]我的 IF 函数不起作用[重复]
【发布时间】:2014-06-30 02:03:44
【问题描述】:

所以,

我运行 Minecraft 服务器并在单独托管的服务器上拥有一个网站。我使用了一个 bukkit 插件,它在玩家加入时向数据库发送一个值。这存储为 [BLOB - 1 B](下图),这是一个二进制值,所以我将其转换为十六进制,然后检查它的值。作为它的布尔值,它可以是 00 - false 或 01 - true。但是当使用我的 if 语句检查值是什么时,如果值为 00,它仍然会在线显示...

但是当我在我的网络服务器上使用此代码时:

<form action="skript2.php" method="get">  
<input type="text" name="user" />
<input type="submit" name="submit" value="Username" />
</form>
<?php
$uname = $_GET['user'];
$con=mysqli_connect("#####","#####","#####","#####");
// Check connection
if (mysqli_connect_errno()) {
  echo "Failed to connect to MySQL: " . mysqli_connect_error();
}

$result = mysqli_query($con,"SELECT * FROM `variables21` WHERE name='db_sdb.$uname.onlinemode'");
if($row = mysqli_fetch_array($result)) {
  $val = $row['value'];
  $str = bin2hex("$val");
  echo "$str";
  if ($str = 01) {
    echo "<body bgcolor=\"green\">";
    echo "<font color=\"white\"><img src=\"https://minotar.net/helm/$uname/32\"> -- $uname is online!</font>";
  }
  if ($str = 00) {
    echo "<body bgcolor=\"red\">";
    echo "<font color=\"white\"><img src=\"https://minotar.net/helm/$uname/32\"> -- $uname is offline!</font>";
  }
}

mysqli_close($con);
?>

##### 的详细信息是私密的,例如密码等。

连接工作正常,否则返回错误说无法连接。

那么为什么我的 IF 函数不起作用?

谢谢! :)

【问题讨论】:

  • 因为在许多条件句中你是在赋值而不是比较。
  • = 是赋值,== 是比较。
  • 感谢大家的帮助 :)!整理好了@NiettheDarkAbsol 这是我的一个普遍错误,习惯了其他编程语言......
  • 你很容易受到SQL injection attacks
  • 这只是一个测试页面,我有一个自动系统,用户无法输入任何内容

标签: php mysql binary hex


【解决方案1】:

你需要 == 运算符

 if ($str == 1) {

}

在你看来

if ($str == 1) {
    echo "<body bgcolor=\"green\">";
    echo "<font color=\"white\"><img src=\"https://minotar.net/helm/$uname/32\"> -- $uname is online!</font>";
  }

对于零,您可以使用 === 运算符

if ($str === 0) {
    echo "<body bgcolor=\"red\">";
    echo "<font color=\"white\"><img src=\"https://minotar.net/helm/$uname/32\"> -- $uname is offline!</font>";
  }

【讨论】:

  • 我是个白痴!太感谢了!习惯了 VB.NET 并且只使用 = :) 谢谢!
  • @nfell2009,不要感觉那么糟糕 :) 编码快乐。
  • VB.NET 不应该存在的另一个原因。
  • @DanAndrews :P 这门语言还不错,我才 16 岁。在我学校的 GCSE 中学习了它。
【解决方案2】:

单个= 将值绑定到变量-

if ($str = 01) {

}

double == 是比较运算符,可以将其视为“等于”。

if ($str == 01) {

}

【讨论】:

  • 对于那些习惯性地把它们倒过来的人,用相反的方式表达它们:01 = $str。这将自动失败,因为您无法进行这种分配。
  • 谢谢!有时候我很傻xD
猜你喜欢
  • 2023-01-23
  • 1970-01-01
  • 2020-10-19
  • 2018-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-08
相关资源
最近更新 更多