sqlsrv_has_rows () возвращает FALSE, но имеет запись [PHP] - PullRequest
1 голос
/ 27 марта 2019

Я не понимаю. Я использовал цикл foreach для массива данных. где я использовал sqlsrv_query (), затем возвращает действительный ресурс оператора и всегда возвращает одну запись, но некоторые записи, что sqlsrv_has_rows () возвращает false, некоторые записи возвращают true (большинство), несмотря на тот факт, что там в том же цикле.

Мой код:

foreach ($namedDataArray as $val) {

    $c++;
    $category = $val[$hcat];
    $mfg = $val[$hmfg];
    $sga = $val[$hsga];
    $grandtotal = $val[$hgt];
    $cat = trim($category,'1234567890. ');

    $values = "'$year', '$pe', '$month', '$cat', $mfg, $sga, $grandtotal, '$name', getdate()";
    $valuesedit = "years='$year', period='$pe', months='$month', category='$cat', mfg=$mfg, sga=$sga, gtt=$grandtotal, databy='$name', timein=getdate()";

    $res = getData($conn,'*','MScost',"years = '$year' and months='$month' and category='$cat'");
    $rows = sqlsrv_has_rows( $res );

    if ($rows === true){
        //$rp = editData($conn, "MScost", $valuesedit,"years = '$year' and months='$month' and category='$cat'");            
        echo "EditData </br>";
    }else {
        //$rp = addData($conn, "MScost", $values);
        echo "InsertData <br/>";
    }
}

Моя функция getData:

function getData($conn,$field,$table,$condi){
    if($condi!=="") {
        $sql = "SELECT $field FROM $table WHERE $condi";
        $result = sqlsrv_query($conn, $sql);
        return $result;
    }else{
        $sql = "SELECT $field FROM $table";
        $result = sqlsrv_query($conn, $sql);            
        return $result;
    }
}

Пример ресурса, который возвращает:

EditData
EditData
InsertData
EditData
EditData
EditData
InsertData
EditData
EditData
EditData

Пожалуйста, кто-нибудь, кто поможет мне без сомнения и решить эту проблему. Спасибо.

...