首页 > 解决方案 > 比较数据库中的数据时,php中的选择条件不起作用

问题描述

我有代码

<?php

require_once 'DB_Functions.php';
$response = array();
$db = new DB_Functions();

if (isset($_POST['no']) && isset($_POST['semester'])) {

    $no = $_POST['no'];
    $semester = $_POST['semester'];
    $list_matkul = array();
    $response['error'] = false;
    $sks = $db->getSks($no,$semester);
    $list_matkul = $db->getAllMatkulMhs($no,$semester);
    $response['sks'] = array_values($sks);
    //check metode penelitian
    if($semester >= 5) {
    if (array_values($sks) >= 96) {
        $names = array_column($list_matkul, 'nama_matkul');
        $metpen = in_array('matkul_1', $names);
        if ($metpen == true){
        $response['metpen'] = "Mengambil Mata Kuliah Metodologi Penelitian TI, mencari Topik Skripsi pada Semester ".($semester+1);
        }
    }}

    echo json_encode($response,JSON_PRETTY_PRINT); 
}
?>

这是json输出

{
"error": false,
"sks": [
24
],
"metpen": "Mengambil Mata Kuliah Metodologi Penelitian TI, mencari Topik Skripsi pada Semester 6"
}

为什么我在 array_values($sks) >= 96 的选择条件仍然可以运行,从上面的 json 我们可以看到 tht array_values($sks) 是 24 并且低于 96 不符合条件要求,但是当我使用 <= 代替它不会运行

这是我如何获得我的 sks 的代码

public function getSks($mhs,$semester) {


        $stmt = $this->conn->prepare("SELECT sks FROM ipk_mhs WHERE no_user_id = ? AND semester <= ?");
        $stmt->bind_param("ss", $mhs, $semester);
        if ($stmt->execute()) {
            $user = $stmt->get_result()->fetch_assoc();
            $stmt->close();
            return $user;
        }}

编辑:当我使用> =(即使它现在低于24)时,我输入的数字总是运行,所以当我使用<=

标签: php

解决方案


array_values 返回一个没有键的数组,只有索引。您应该使用比较您的数组 $sks[index or key]

例如:

$array = array("size" => "XL", "color" => "gold");

$array["size"]输出将是:“XL”


推荐阅读