Php if语句的输出总是相同的
SQL是正确的,因为当我在phpMyAdmin中执行SQL时,它会给我正确的输出。 下面的代码总是给我输出“讲师”。我如何解决这个问题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
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(如果
;-)也许magicqueryMysql
函数正在阻止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类型的对象用作数组。所以我明天会问我的老师,因为其他地方可能有错误。再一次,非常感谢!:)谢谢你的帮助