我的if语句的输出始终是相同的

时间:2016-01-28 15:55:37

标签: php mysql

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.';
?>

5 个答案:

答案 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';
      }