SQL是正确的,因为当我在phpMyAdmin中执行SQL时,它会给我正确的输出。 下面的代码总是给我输出'讲师。'我怎么解决这个?
<?php
$datetime1 = new DateTime("$date_of_dissolution");
$datetime2 = new DateTime("$date_of_incorp");
$datetime3 = new DateTime("$date_commenced_dormancy");
$datetime4 = date("Y-m-d");
if ($active_status ==('Live but Commenced Dormancy')) {
$difference = $datetime3->diff($datetime2);
} elseif ($active_status ==('Dissolved')) {
$difference = $datetime1->diff($datetime2);
} else {
$difference = $datetime4->diff($datetime2);
echo 'And the company is running: '.$difference->y.' years, '.$difference->m.' months, '.$difference->d.' days.';
?>
答案 0 :(得分:3)
由于$conn->query()
的神奇之处,您从查询中获得了结果,您所要做的就是使用正确的格式来获取数据。一种方法是获取一个关联数组并返回:
queryMysql($query) {
global $conn;
$result = $conn->query($query);
if (!$result) {
die($conn->error);
}
return $result->fetch_assoc();
}
$result
现在是一个数组,可以通过提供标识符来访问它的各个部分,你可以利用这些标识符:
if ($usertype['UserType'] === $student){
echo 'student';
} elseif ($usertype['UserType'] === $teacher) {
echo 'teacher';
} else {
echo 'instructor';
}
答案 1 :(得分:0)
我认为它会解决你的问题。
$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';
}
答案 2 :(得分:0)
在您的代码中,$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;
}
答案 3 :(得分:0)
您的代码失败,因为queryMysql()
返回一个对象而不是预期的字符串。
正如评论中所建议的那样,你必须以这种方式改变你的功能:
function queryMysql( $query )
{
(...)
return $result->fetch_assoc();
}
然后您获得一个带有键作为表列名称的associative array。
所以,你可以这样继续:
$usertype = queryMysql("SELECT UserType FROM users WHERE Username='$user' AND Password='$pass'");
echo strtolower($usertype['UserType']);
根据评论中的建议,或 - 如果您愿意 - 以您的方式:
$student = 'Student';
(...)
if( $usertype['UserType'] === $student ) {
(...)
}
探索PHP Documentation(包括评论),您可以找到改进mySQL搜索的方法。
...并享受编码乐趣!
答案 4 :(得分:0)
我设法通过让原始的mysql()函数保持相同(因为它在别处用于其他目的)并且只是使用fetch_assoc()来进行此查询(我确信有人在某处提到了评论很抱歉) 感谢您的帮助! :)
$usertype = queryMysql("SELECT UserType FROM users WHERE Username='$user' AND Password='$pass'");
$result2 = $usertype->fetch_assoc();
$student = 'Student';
$teacher = 'Teacher';
$instructor = 'Instructor';
if ($result2['UserType'] === $student){
echo 'student';
} elseif ($result2['UserType'] === $teacher) {
echo 'teacher';
} else {
echo 'instructor';
}