当我的主页中的函数调用时,我执行了这个 php 案例。当我这样输入我的变量时: $tutorReasonString = "I'm fine and working."和 $clientReasonString = "我也很好,谢谢你的提问",这里没有错。但是当我尝试使用 pg_fetch_array() 获取它们时,我得到返回的 NULL 值。
请注意,tutorabsence 和 clientabsence 表不与任何类型的 SQL 触发器相关联,我只在另一个执行中为它们分配完全相同的 id,该 id 从另一个表的行中检索到 php。
case "absencePc":
$id = array_search(post("id"), $_SESSION["keyhash"]);
$tutorAbsSql = "SELECT reason FROM tutorabsence WHERE id='$id'";
$tutorReason = pg_query($tutorAbsSql);
if(pg_fetch_row($tutorReason) == NULL) {
$tutorStatus = "0";
$tutorReasonString = "";
} else {
$tutorStatus = "1";
// $tutorReasonString = "I'm working"; This works
// This returns null.
$tutorReasonFetch = pg_fetch_array($tutorReason);
$tutorReasonString = $tutorReasonFetch["reason"];
};
$clientAbsSql = "SELECT reason FROM clientabsence WHERE id='$id'";
$clientReason = pg_query($clientAbsSql);
if(pg_fetch_row($clientReason) == NULL) {
$clientStatus = "0";
$clientReasonString = "";
} else {
$clientStatus = "1";
// $clientReasonString = "I'm working"; This works
// This returns null.
$clientReasonFetch = pg_fetch_array($clientReason);
$clientReasonString = $clientReasonFetch["reason"];
};
$response[] = array("tutorReason" => $tutorReasonString,
"clientReason" => $clientReasonString,
"tutorStatus" => $tutorStatus,
"clientStatus" => $clientStatus);
echo json_encode($response);
break;
最佳答案
您遇到的问题是您从 1 个结果中提取了两次:
$tutorAbsSql = "SELECT reason FROM tutorabsence WHERE id='$id'";
$tutorReason = pg_query($tutorAbsSql);
if(($row = pg_fetch_row($tutorReason)) != false){
$tutorStatus = "1";
$tutorReasonString = $row[0];
print_r($row);
} else {
$tutorStatus = "0";
$tutorReasonString = "";
}
它在内部向前移动结果指针,然后 pg_fetch_array()
获取下一个不存在的值。
关于php - 尽管进行了空检查,为什么 pg_fetch_array 仍返回空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42321451/