Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php if语句的输出总是相同的_Php_Mysql - Fatal编程技术网

Php if语句的输出总是相同的

Php if语句的输出总是相同的,php,mysql,Php,Mysql,SQL是正确的,因为当我在phpMyAdmin中执行SQL时,它会给我正确的输出。 下面的代码总是给我输出“讲师”。我如何解决这个问题 queryMysql($query) { global $conn; $result = $conn->query($query); if (!$result) { die($conn->error); } return $result; } $usertype = qu

SQL是正确的,因为当我在phpMyAdmin中执行SQL时,它会给我正确的输出。 下面的代码总是给我输出“讲师”。我如何解决这个问题

queryMysql($query) { 
    global $conn; 
    $result = $conn->query($query); 
    if (!$result) { 
        die($conn->error); 
    } 
    return $result; 
}



  $usertype = queryMysql("SELECT UserType FROM users WHERE Username='$user' AND Password='$pass'");
  $student = 'Student';
  $teacher = 'Teacher';
  $instructor = 'Instructor';
  if ($usertype === $student){
      echo 'student';
  } elseif ($usertype === $teacher) {
      echo 'teacher';
  } else {
      echo 'instructor';
  }

我想这会解决你的问题

    $result = mysql_query("SELECT UserType FROM users WHERE Username='$user' AND Password='$pass'");
    $usertype = mysql_fetch_array($result);
    $student = 'Student';
    $teacher = 'Teacher';
    $instructor = 'Instructor';
    if ($usertype['UserType'] == $student){
      echo 'student';
    } elseif ($usertype['UserType'] == $teacher) {
      echo 'teacher';
    } else {
      echo 'instructor';
    }

我想这会解决你的问题

    $result = mysql_query("SELECT UserType FROM users WHERE Username='$user' AND Password='$pass'");
    $usertype = mysql_fetch_array($result);
    $student = 'Student';
    $teacher = 'Teacher';
    $instructor = 'Instructor';
    if ($usertype['UserType'] == $student){
      echo 'student';
    } elseif ($usertype['UserType'] == $teacher) {
      echo 'teacher';
    } else {
      echo 'instructor';
    }

在代码中,
$result
是结果对象,而不是实际结果。您需要这样做:

queryMysql($query) { 
    global $conn; 
    $dbQuery = $conn->query($query);
    $result = $dbQuery->fetch_assoc(); //this gets the actual row rather than just the mysqli_result object
    if (!$result) { 
        die($conn->error); 
    } 
    return $result; 
}
 if ($usertype['UserType'] === $student){
      echo 'student';
  } elseif ($usertype['UserType'] === $teacher) {
      echo 'teacher';
  } else {
      echo 'instructor';
  }

在代码中,
$result
是结果对象,而不是实际结果。您需要这样做:

queryMysql($query) { 
    global $conn; 
    $dbQuery = $conn->query($query);
    $result = $dbQuery->fetch_assoc(); //this gets the actual row rather than just the mysqli_result object
    if (!$result) { 
        die($conn->error); 
    } 
    return $result; 
}
 if ($usertype['UserType'] === $student){
      echo 'student';
  } elseif ($usertype['UserType'] === $teacher) {
      echo 'teacher';
  } else {
      echo 'instructor';
  }

由于
$conn->query()
的魔力,您可以从查询中获取结果,因此只需使用正确的格式即可获取数据。一种方法是获取关联数组并返回:

queryMysql($query) { 
    global $conn; 
    $result = $conn->query($query); 
    if (!$result) { 
        die($conn->error); 
    } 
    return $result->fetch_assoc(); 
}
$result
现在是一个数组,可以通过提供标识符来访问其部分,您可以像这样利用标识符:

queryMysql($query) { 
    global $conn; 
    $dbQuery = $conn->query($query);
    $result = $dbQuery->fetch_assoc(); //this gets the actual row rather than just the mysqli_result object
    if (!$result) { 
        die($conn->error); 
    } 
    return $result; 
}
 if ($usertype['UserType'] === $student){
      echo 'student';
  } elseif ($usertype['UserType'] === $teacher) {
      echo 'teacher';
  } else {
      echo 'instructor';
  }

由于
$conn->query()
的魔力,您可以从查询中获取结果,因此只需使用正确的格式即可获取数据。一种方法是获取关联数组并返回:

queryMysql($query) { 
    global $conn; 
    $result = $conn->query($query); 
    if (!$result) { 
        die($conn->error); 
    } 
    return $result->fetch_assoc(); 
}
$result
现在是一个数组,可以通过提供标识符来访问其部分,您可以像这样利用标识符:

queryMysql($query) { 
    global $conn; 
    $dbQuery = $conn->query($query);
    $result = $dbQuery->fetch_assoc(); //this gets the actual row rather than just the mysqli_result object
    if (!$result) { 
        die($conn->error); 
    } 
    return $result; 
}
 if ($usertype['UserType'] === $student){
      echo 'student';
  } elseif ($usertype['UserType'] === $teacher) {
      echo 'teacher';
  } else {
      echo 'instructor';
  }

您的代码失败,因为
queryMysql()
返回一个对象而不是预期的字符串。 正如评论中所建议的,您必须以以下方式更改您的功能:

function queryMysql( $query ) 
{ 
    (...) 
    return $result->fetch_assoc();
}
$usertype = queryMysql("SELECT UserType FROM users WHERE Username='$user' AND Password='$pass'");
echo strtolower($usertype['UserType']);
然后获得一个以键作为表列名的表

因此,您可以通过以下方式继续:

function queryMysql( $query ) 
{ 
    (...) 
    return $result->fetch_assoc();
}
$usertype = queryMysql("SELECT UserType FROM users WHERE Username='$user' AND Password='$pass'");
echo strtolower($usertype['UserType']);
按照评论中的建议,或者——如果您愿意的话——按照您的方式:

$student = 'Student';
(...)
if( $usertype['UserType'] === $student ) {
(...)
}
通过浏览(包括注释),您可以找到如何改进mySQL搜索


。。。并且享受编码的乐趣

您的代码失败,因为
queryMysql()
返回一个对象而不是预期的字符串。 正如评论中所建议的,您必须以以下方式更改您的功能:

function queryMysql( $query ) 
{ 
    (...) 
    return $result->fetch_assoc();
}
$usertype = queryMysql("SELECT UserType FROM users WHERE Username='$user' AND Password='$pass'");
echo strtolower($usertype['UserType']);
然后获得一个以键作为表列名的表

因此,您可以通过以下方式继续:

function queryMysql( $query ) 
{ 
    (...) 
    return $result->fetch_assoc();
}
$usertype = queryMysql("SELECT UserType FROM users WHERE Username='$user' AND Password='$pass'");
echo strtolower($usertype['UserType']);
按照评论中的建议,或者——如果您愿意的话——按照您的方式:

$student = 'Student';
(...)
if( $usertype['UserType'] === $student ) {
(...)
}
通过浏览(包括注释),您可以找到如何改进mySQL搜索


。。。并且享受编码的乐趣

我设法让它正常工作,方法是保持原始mysql()函数不变(因为它在其他地方用于另一个目的),并简单地使用fetch_assoc()进行此查询(我肯定有人在评论中提到了这一点,非常抱歉) 谢谢大家的帮助!!:)


我设法让它正常工作,方法是保持原来的mysql()函数不变(因为它在其他地方被用于其他目的),并简单地使用fetch_assoc()进行此查询(我肯定有人在评论中提到了这一点,非常抱歉) 谢谢大家的帮助!!:)



也许这个神奇的
queryMysql
函数正在阻止sql注入攻击:)我怀疑它能阻止,但是。。maybe@JayBlanchard-我在下注,(我认为它已被清除)祈祷^你应该
return$result->fetch_assoc()调用函数
echo strtolower($result['UserType'])之后线索:
while(如果
;-)也许magic
queryMysql
函数正在阻止sql注入攻击:)我怀疑它能阻止,但是。。maybe@JayBlanchard-我在下注,(我认为它已被清除)祈祷^你应该
return$result->fetch_assoc()调用函数
echo strtolower($result['UserType'])之后提示:
请稍等一会儿(如果
;-)。已在PHP7中删除。了解使用PDO的语句,并考虑使用PDO,第二个杰伊的评论,停止使用MySqL**。现在是喝茶时间^ u^问题不在mysql函数中。在主要问题$usertype=queryMysql(“从Username='$user'和Password='$pass'的用户中选择usertype”);我将返回一整套数组。因此,您需要比较if语句中的$usertype['usertype'],$usertype返回什么?使用echo$usertype;为什么OP要尝试这个?你为什么认为它能解决这个问题?一个好的答案总是会有一个解释,说明做了什么,为什么这样做,不仅是为了OP,而且是为了未来的访客。请。已在PHP7中删除。了解使用PDO的语句,并考虑使用PDO,第二个杰伊的评论,停止使用MySqL**。现在是喝茶时间^ u^问题不在mysql函数中。在主要问题$usertype=queryMysql(“从Username='$user'和Password='$pass'的用户中选择usertype”);我将返回一整套数组。因此,您需要比较if语句中的$usertype['usertype'],$usertype返回什么?使用echo$usertype;为什么OP要尝试这个?你为什么认为它能解决这个问题?一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。如果你阅读了关于这个问题的评论,你会注意到$conn不是PDO对象,这是你从文档中链接到的。@RichardTheobald我也要提到这一点,但原理是一样的(函数仍然是通用的)。但杰伊肯定会纠正的;-)感谢您的回复/帮助!我仍然得到错误:无法将mysqli_result类型的对象用作数组。所以我明天会问我的老师,因为其他地方可能有错误。再一次,非常感谢!:)如果你阅读了关于这个问题的评论,你会注意到$conn不是一个PDO对象,这是你从文档中链接到的。@RichardTheobald我也想提一下,但原理是一样的(函数仍然是通用的)。但杰伊肯定会纠正的;-)感谢您的回复/帮助!我仍然得到错误:无法将mysqli_result类型的对象用作数组。所以我明天会问我的老师,因为其他地方可能有错误。再一次,非常感谢!:)谢谢你的帮助