prepare($sql); // باراميترات الربط $params = [ ':id' => $driverID, ]; foreach ($params as $k => $v) { $stmt->bindValue($k, $v); } /* ───────── dumpParams (اختياري) ───────── */ ob_start(); $stmt->debugDumpParams(); error_log("[Debug] dumpParams:\n" . ob_get_clean()); /* ──────────────────────────────── 4) تنفيذ الاستعلام ───────────────────────────────── */ $stmt->execute(); error_log("[Debug] stmt->rowCount(): " . $stmt->rowCount()); $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); // error_log("[Debug] Raw fetched JSON: " . json_encode($rows, JSON_UNESCAPED_UNICODE)); if (!$rows) { jsonError("User does not exist or phone not verified."); exit; } /* ──────────────────────────────── 5) فك التشفير للحقول الحسّاسة ───────────────────────────────── */ $data = &$rows[0]; // مرجع لتوفير الذاكرة $decryptIfNotNull = function($field) use (&$data, $encryptionHelper) { if (isset($data[$field]) && $data[$field] !== null) { $data[$field] = $encryptionHelper->decryptData($data[$field]); } }; foreach ([ 'phone', 'email', 'gender', 'birthdate', 'site', 'first_name', 'last_name' ] as $field) { $decryptIfNotNull($field); } error_log("[Debug] Raw fetched JSON: " . json_encode($rows, JSON_UNESCAPED_UNICODE)); echo json_encode([ "status" => "success", "count" => 1, "data" => $rows // نتيجة واحدة فقط ], JSON_UNESCAPED_UNICODE); } catch (PDOException $e) { error_log("[PDO ERROR] " . $e->getMessage()); jsonError("Database error: ".$e->getCode()); } catch (Exception $e) { error_log("[GENERAL ERROR] " . $e->getMessage()); jsonError("Error occurred."); } finally { $stmt = null; $con = null; } ?>