fetch('SELECT id FROM users WHERE phone_number = ?', [$phone]); if (!$user) { echo "User not found, creating: $phone\n"; $db->insert('users', ['phone_number' => $phone, 'status' => 'active', 'created_at' => date('Y-m-d H:i:s')]); $userId = $db->lastInsertId(); echo "Created user id: $userId\n"; } else { $userId = $user['id']; echo "User exists id: $userId\n"; } // Attempt insert echo "Attempting insert message_id: $mid\n"; $msg = [ 'user_id' => $userId, 'message_id' => $mid, 'direction' => 'incoming', 'message_type' => 'text', 'content' => $text, 'media_url' => null, 'status' => 'received', 'created_at' => date('Y-m-d H:i:s') ]; try { // Manual insert using PDO to capture detailed errors $pdo = $db->getConnection(); $keys = array_keys($msg); $fields = implode(', ', $keys); $placeholders = ':' . implode(', :', $keys); $sql = "INSERT INTO conversations ({$fields}) VALUES ({$placeholders})"; $stmt = $pdo->prepare($sql); echo "Prepared SQL\n"; $res = $stmt->execute($msg); echo "Executed: " . ($res ? 'true' : 'false') . "\n"; $err = $stmt->errorInfo(); echo "Stmt errorInfo: " . json_encode($err) . "\n"; $lastId = $pdo->lastInsertId(); echo "Inserted conversation id (manual): $lastId\n"; } catch (Exception $e) { echo "INSERT EXCEPTION: " . $e->getMessage() . PHP_EOL; } } } } } } catch (Exception $e) { echo "EXCEPTION: " . $e->getMessage() . PHP_EOL; }